From: Adam Israel Date: Tue, 15 Aug 2017 19:26:43 +0000 (-0400) Subject: Merge commit '19031b24b523c872c1ac367821dc60c950a09755' as 'modules/libjuju' X-Git-Tag: v4.0.0~12 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=68858c1915122c2dbc8999a5cd3229694abf5f3a;p=osm%2FN2VC.git Merge commit '19031b24b523c872c1ac367821dc60c950a09755' as 'modules/libjuju' --- 68858c1915122c2dbc8999a5cd3229694abf5f3a diff --cc modules/libjuju/.gitignore index 0000000,0000000..866a785 new file mode 100644 --- /dev/null +++ b/modules/libjuju/.gitignore @@@ -1,0 -1,0 +1,12 @@@ ++*.sw[mnop] ++.venv/ ++*.pyc ++*.py~ ++docs/_build/ ++__pycache__/ ++.tox/ ++*.egg-info/ ++.cache/ ++.\#* ++dist/ ++dev/ diff --cc modules/libjuju/.travis.yml index 0000000,0000000..0a57c38 new file mode 100644 --- /dev/null +++ b/modules/libjuju/.travis.yml @@@ -1,0 -1,0 +1,23 @@@ ++dist: trusty ++sudo: required ++language: python ++python: ++ - "3.5" ++before_install: ++ - sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable -y ++ - sudo apt-get update -q ++ - sudo apt-get install lxd snapd -y ++ - sudo usermod -a -G lxd $USER ++ - sudo service lxd start || true ++ - sudo lxd init --auto ++install: pip install tox-travis ++env: ++ - SNAP_CMD="sudo snap install juju --classic --stable" ++ - SNAP_CMD="sudo snap install juju --classic --edge" ++script: ++ - (eval "$SNAP_CMD") ++ - sudo ln -s /snap/bin/juju /usr/bin/juju || true ++ - sudo -E sudo -u $USER -E bash -c "/snap/bin/juju bootstrap localhost test" ++ - tox -e py35,integration ++ - sudo -E sudo -u $USER -E bash -c "/snap/bin/juju destroy-controller --destroy-all-models -y test" ++ - sudo snap remove juju diff --cc modules/libjuju/CONTRIBUTORS index 0000000,0000000..3895eaa new file mode 100644 --- /dev/null +++ b/modules/libjuju/CONTRIBUTORS @@@ -1,0 -1,0 +1,4 @@@ ++Benjamin Saller ++Tim Van Steenburgh ++Cory Johns ++Pete VanderGiessen diff --cc modules/libjuju/LICENSE index 0000000,0000000..8dada3e new file mode 100644 --- /dev/null +++ b/modules/libjuju/LICENSE @@@ -1,0 -1,0 +1,201 @@@ ++ 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. diff --cc modules/libjuju/MANIFEST.in index 0000000,0000000..c14d3fc new file mode 100644 --- /dev/null +++ b/modules/libjuju/MANIFEST.in @@@ -1,0 -1,0 +1,5 @@@ ++include *.py CONTRIBUTORS LICENSE README.rst VERSION ++recursive-include juju *.py ++recursive-include examples *.py ++recursive-include docs *.rst ++exclude Makefile diff --cc modules/libjuju/Makefile index 0000000,0000000..2e59306 new file mode 100644 --- /dev/null +++ b/modules/libjuju/Makefile @@@ -1,0 -1,0 +1,40 @@@ ++BIN := .tox/py35/bin ++PY := $(BIN)/python3.5 ++PIP := $(BIN)/pip ++SCHEMAGEN := $(shell which schemagen) ++VERSION=$(shell cat VERSION) ++ ++clean: ++ find . -name __pycache__ -type d -exec rm -r {} + ++ find . -name *.pyc -delete ++ rm -rf .tox ++ rm -rf docs/_build/ ++ ++.tox: ++ tox -r --notest ++ ++client: ++ifndef SCHEMAGEN ++ $(error "schemagen is not available, please install from https://github.com/juju/schemagen") ++endif ++ $(PY) -m juju.client.facade -s "juju/client/schemas*" -o juju/client/ ++ ++test: ++ tox ++ ++docs: .tox ++ $(PIP) install -r docs/requirements.txt ++ rm -rf docs/_build/ ++ $(BIN)/sphinx-build -b html docs/ docs/_build/ ++ cd docs/_build/ && zip -r docs.zip * ++ ++release: ++ git remote | xargs -L1 git fetch --tags ++ $(PY) setup.py sdist upload ++ git tag ${VERSION} ++ git remote | xargs -L1 git push --tags ++ ++upload: release ++ ++ ++.PHONY: clean client test docs upload release diff --cc modules/libjuju/README.rst index 0000000,0000000..c750ce5 new file mode 120000 --- /dev/null +++ b/modules/libjuju/README.rst @@@ -1,0 -1,0 +1,1 @@@ ++docs/readme.rst diff --cc modules/libjuju/TODO index 0000000,0000000..94fc342 new file mode 100644 --- /dev/null +++ b/modules/libjuju/TODO @@@ -1,0 -1,0 +1,5 @@@ ++TODO ++==== ++ ++- Add a LogWatcher coroutine that yields from debug-log api ++- Add a way to exit the event loop when a Model matches a bundle yaml diff --cc modules/libjuju/VERSION index 0000000,0000000..a918a2a new file mode 100644 --- /dev/null +++ b/modules/libjuju/VERSION @@@ -1,0 -1,0 +1,1 @@@ ++0.6.0 diff --cc modules/libjuju/docs/Makefile index 0000000,0000000..2869eb4 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/Makefile @@@ -1,0 -1,0 +1,230 @@@ ++# Makefile for Sphinx documentation ++# ++ ++# You can set these variables from the command line. ++SPHINXOPTS = ++SPHINXBUILD = sphinx-build ++PAPER = ++BUILDDIR = _build ++ ++# User-friendly check for sphinx-build ++ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) ++ $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don\'t have Sphinx installed, grab it from http://sphinx-doc.org/) ++endif ++ ++# Internal variables. ++PAPEROPT_a4 = -D latex_paper_size=a4 ++PAPEROPT_letter = -D latex_paper_size=letter ++ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . ++# the i18n builder cannot share the environment and doctrees with the others ++I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . ++ ++.PHONY: help ++help: ++ @echo "Please use \`make ' where is one of" ++ @echo " html to make standalone HTML files" ++ @echo " dirhtml to make HTML files named index.html in directories" ++ @echo " singlehtml to make a single large HTML file" ++ @echo " pickle to make pickle files" ++ @echo " json to make JSON files" ++ @echo " htmlhelp to make HTML files and a HTML help project" ++ @echo " qthelp to make HTML files and a qthelp project" ++ @echo " applehelp to make an Apple Help Book" ++ @echo " devhelp to make HTML files and a Devhelp project" ++ @echo " epub to make an epub" ++ @echo " epub3 to make an epub3" ++ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" ++ @echo " latexpdf to make LaTeX files and run them through pdflatex" ++ @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" ++ @echo " text to make text files" ++ @echo " man to make manual pages" ++ @echo " texinfo to make Texinfo files" ++ @echo " info to make Texinfo files and run them through makeinfo" ++ @echo " gettext to make PO message catalogs" ++ @echo " changes to make an overview of all changed/added/deprecated items" ++ @echo " xml to make Docutils-native XML files" ++ @echo " pseudoxml to make pseudoxml-XML files for display purposes" ++ @echo " linkcheck to check all external links for integrity" ++ @echo " doctest to run all doctests embedded in the documentation (if enabled)" ++ @echo " coverage to run coverage check of the documentation (if enabled)" ++ @echo " dummy to check syntax errors of document sources" ++ ++.PHONY: clean ++clean: ++ rm -rf $(BUILDDIR)/* ++ ++.PHONY: html ++html: ++ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html ++ @echo ++ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." ++ ++.PHONY: dirhtml ++dirhtml: ++ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml ++ @echo ++ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." ++ ++.PHONY: singlehtml ++singlehtml: ++ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml ++ @echo ++ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." ++ ++.PHONY: pickle ++pickle: ++ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle ++ @echo ++ @echo "Build finished; now you can process the pickle files." ++ ++.PHONY: json ++json: ++ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json ++ @echo ++ @echo "Build finished; now you can process the JSON files." ++ ++.PHONY: htmlhelp ++htmlhelp: ++ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp ++ @echo ++ @echo "Build finished; now you can run HTML Help Workshop with the" \ ++ ".hhp project file in $(BUILDDIR)/htmlhelp." ++ ++.PHONY: qthelp ++qthelp: ++ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp ++ @echo ++ @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ++ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" ++ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/libjuju.qhcp" ++ @echo "To view the help file:" ++ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/libjuju.qhc" ++ ++.PHONY: applehelp ++applehelp: ++ $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp ++ @echo ++ @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." ++ @echo "N.B. You won't be able to view it unless you put it in" \ ++ "~/Library/Documentation/Help or install it in your application" \ ++ "bundle." ++ ++.PHONY: devhelp ++devhelp: ++ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp ++ @echo ++ @echo "Build finished." ++ @echo "To view the help file:" ++ @echo "# mkdir -p $$HOME/.local/share/devhelp/libjuju" ++ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/libjuju" ++ @echo "# devhelp" ++ ++.PHONY: epub ++epub: ++ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub ++ @echo ++ @echo "Build finished. The epub file is in $(BUILDDIR)/epub." ++ ++.PHONY: epub3 ++epub3: ++ $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3 ++ @echo ++ @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3." ++ ++.PHONY: latex ++latex: ++ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex ++ @echo ++ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." ++ @echo "Run \`make' in that directory to run these through (pdf)latex" \ ++ "(use \`make latexpdf' here to do that automatically)." ++ ++.PHONY: latexpdf ++latexpdf: ++ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex ++ @echo "Running LaTeX files through pdflatex..." ++ $(MAKE) -C $(BUILDDIR)/latex all-pdf ++ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." ++ ++.PHONY: latexpdfja ++latexpdfja: ++ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex ++ @echo "Running LaTeX files through platex and dvipdfmx..." ++ $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja ++ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." ++ ++.PHONY: text ++text: ++ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text ++ @echo ++ @echo "Build finished. The text files are in $(BUILDDIR)/text." ++ ++.PHONY: man ++man: ++ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man ++ @echo ++ @echo "Build finished. The manual pages are in $(BUILDDIR)/man." ++ ++.PHONY: texinfo ++texinfo: ++ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo ++ @echo ++ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." ++ @echo "Run \`make' in that directory to run these through makeinfo" \ ++ "(use \`make info' here to do that automatically)." ++ ++.PHONY: info ++info: ++ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo ++ @echo "Running Texinfo files through makeinfo..." ++ make -C $(BUILDDIR)/texinfo info ++ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." ++ ++.PHONY: gettext ++gettext: ++ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale ++ @echo ++ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." ++ ++.PHONY: changes ++changes: ++ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes ++ @echo ++ @echo "The overview file is in $(BUILDDIR)/changes." ++ ++.PHONY: linkcheck ++linkcheck: ++ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck ++ @echo ++ @echo "Link check complete; look for any errors in the above output " \ ++ "or in $(BUILDDIR)/linkcheck/output.txt." ++ ++.PHONY: doctest ++doctest: ++ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest ++ @echo "Testing of doctests in the sources finished, look at the " \ ++ "results in $(BUILDDIR)/doctest/output.txt." ++ ++.PHONY: coverage ++coverage: ++ $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage ++ @echo "Testing of coverage in the sources finished, look at the " \ ++ "results in $(BUILDDIR)/coverage/python.txt." ++ ++.PHONY: xml ++xml: ++ $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml ++ @echo ++ @echo "Build finished. The XML files are in $(BUILDDIR)/xml." ++ ++.PHONY: pseudoxml ++pseudoxml: ++ $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml ++ @echo ++ @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." ++ ++.PHONY: dummy ++dummy: ++ $(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy ++ @echo ++ @echo "Build finished. Dummy builder generates no files." diff --cc modules/libjuju/docs/_extensions/automembersummary.py index 0000000,0000000..898da62 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/_extensions/automembersummary.py @@@ -1,0 -1,0 +1,114 @@@ ++# Copyright 2014-2015 Canonical Limited. ++# ++# This file is part of charm-helpers. ++# ++# charm-helpers is free software: you can redistribute it and/or modify ++# it under the terms of the GNU Lesser General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# charm-helpers 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 charm-helpers. If not, see . ++ ++ ++import importlib ++import inspect ++import textwrap ++ ++from docutils import nodes ++from docutils.statemachine import ViewList ++from sphinx.errors import SphinxError ++from sphinx.util.compat import Directive ++from sphinx.util.nodes import nested_parse_with_titles ++ ++ ++class AutoMemberSummary(Directive): ++ required_arguments = 1 ++ ++ def run(self): ++ module_name = self.arguments[0] ++ ++ try: ++ module = importlib.import_module(module_name) ++ except ImportError: ++ raise SphinxError("Unable to generate reference docs for %s, " ++ "could not import" % (module_name)) ++ ++ divider = '+{:-<80}+'.format('') ++ row = '| {:<78} |'.format ++ lines = [] ++ for member_name, member in inspect.getmembers(module): ++ if not self._filter(module_name, member_name, member): ++ continue ++ summary = textwrap.wrap(self._get_summary(member), 78) or [''] ++ link = '`{} <#{}>`_'.format(member_name, ++ '.'.join([module_name, ++ member_name])) ++ methods = ['* `{} <#{}>`_'.format(n, ++ '.'.join([module_name, ++ member_name, ++ n])) ++ for n, m in inspect.getmembers(member) ++ if not n.startswith('_') and inspect.isfunction(m)] ++ ++ lines.append(divider) ++ lines.append(row(link)) ++ lines.append(divider) ++ for line in summary: ++ lines.append(row(line)) ++ if methods: ++ lines.append(row('')) ++ lines.append(row('Methods:')) ++ lines.append(row('')) ++ for i, method in enumerate(methods): ++ lines.append(row(method)) ++ lines.append(divider) ++ content = '\n'.join(lines) ++ ++ result = self._parse(content, '') ++ return result ++ ++ def _get_summary(self, member): ++ doc = (member.__doc__ or '').splitlines() ++ ++ # strip any leading blank lines ++ while doc and not doc[0].strip(): ++ doc.pop(0) ++ ++ # strip anything after the first blank line ++ for i, piece in enumerate(doc): ++ if not piece.strip(): ++ doc = doc[:i] ++ break ++ ++ return " ".join(doc).strip() ++ ++ def _filter(self, module_name, member_name, member): ++ if member_name.startswith('_'): ++ return False ++ if hasattr(member, '__module__'): ++ # skip imported classes & functions ++ return member.__module__.startswith(module_name) ++ elif hasattr(member, '__name__'): ++ # skip imported modules ++ return member.__name__.startswith(module_name) ++ else: ++ return False # skip instances ++ return True ++ ++ def _parse(self, rst_text, annotation): ++ result = ViewList() ++ for line in rst_text.split("\n"): ++ result.append(line, annotation) ++ node = nodes.paragraph() ++ node.document = self.state.document ++ nested_parse_with_titles(self.state, result, node) ++ return node.children ++ ++ ++def setup(app): ++ app.add_directive('automembersummary', AutoMemberSummary) diff --cc modules/libjuju/docs/_static/custom.css index 0000000,0000000..333cd74 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/_static/custom.css @@@ -1,0 -1,0 +1,5 @@@ ++.wy-table-responsive table td, ++.wy-table-responsive table th ++{ ++ white-space: normal !important; ++} diff --cc modules/libjuju/docs/api/juju.action.rst index 0000000,0000000..cc86af2 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.action.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.action ++=========== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.action ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.action ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.annotation.rst index 0000000,0000000..ec31344 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.annotation.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.annotation ++=============== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.annotation ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.annotation ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.application.rst index 0000000,0000000..dba9177 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.application.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.application ++================ ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.application ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.application ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.client.rst index 0000000,0000000..6a699c0 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.client.rst @@@ -1,0 -1,0 +1,120 @@@ ++juju\.client package ++==================== ++ ++These packages are for internal use in communicating with the low-level ++API. You should use the object oriented API instead. They are documented ++here for developer reference. ++ ++ ++juju\.client\.client module ++--------------------------- ++ ++.. automodule:: juju.client.client ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\._definitions module ++--------------------------------- ++ ++.. automodule:: juju.client._definitions ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\._client module ++---------------------------- ++ ++.. automodule:: juju.client._client ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\._client1 module ++----------------------------- ++ ++.. automodule:: juju.client._client1 ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\._client2 module ++----------------------------- ++ ++.. automodule:: juju.client._client2 ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\._client3 module ++----------------------------- ++ ++.. automodule:: juju.client._client3 ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\._client4 module ++----------------------------- ++ ++.. automodule:: juju.client._client4 ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\._client5 module ++----------------------------- ++ ++.. automodule:: juju.client._client5 ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\.codegen module ++---------------------------- ++ ++.. automodule:: juju.client.codegen ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\.connection module ++------------------------------- ++ ++.. automodule:: juju.client.connection ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\.facade module ++--------------------------- ++ ++.. automodule:: juju.client.facade ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\.overrides module ++------------------------------ ++ ++.. automodule:: juju.client.overrides ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++juju\.client\.runner module ++--------------------------- ++ ++.. automodule:: juju.client.runner ++ :members: ++ :undoc-members: ++ :show-inheritance: ++ ++ ++Module contents ++--------------- ++ ++.. automodule:: juju.client ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.cloud.rst index 0000000,0000000..39021e0 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.cloud.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.cloud ++========== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.cloud ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.cloud ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.constraints.rst index 0000000,0000000..5fcbd31 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.constraints.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.constraints ++================ ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.constraints ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.constraints ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.controller.rst index 0000000,0000000..4484fd5 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.controller.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.controller ++=============== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.controller ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.controller ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.delta.rst index 0000000,0000000..9924f8c new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.delta.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.delta ++========== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.delta ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.delta ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.errors.rst index 0000000,0000000..7c77574 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.errors.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.errors ++=========== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.errors ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.errors ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.exceptions.rst index 0000000,0000000..85be2fb new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.exceptions.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.exceptions ++=============== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.exceptions ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.exceptions ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.juju.rst index 0000000,0000000..68698c3 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.juju.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.juju ++========= ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.juju ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.juju ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.loop.rst index 0000000,0000000..4f175e9 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.loop.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.loop ++========= ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.loop ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.loop ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.machine.rst index 0000000,0000000..edb5b6c new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.machine.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.machine ++============ ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.machine ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.machine ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.model.rst index 0000000,0000000..dfb735d new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.model.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.model ++========== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.model ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.model ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.placement.rst index 0000000,0000000..67cde0c new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.placement.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.placement ++============== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.placement ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.placement ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.relation.rst index 0000000,0000000..90e3130 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.relation.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.relation ++============= ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.relation ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.relation ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.tag.rst index 0000000,0000000..9b3a29f new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.tag.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.tag ++======== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.tag ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.tag ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.unit.rst index 0000000,0000000..4a7d167 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.unit.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.unit ++========= ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.unit ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.unit ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/juju.utils.rst index 0000000,0000000..9220a1b new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/juju.utils.rst @@@ -1,0 -1,0 +1,13 @@@ ++juju.utils ++========== ++ ++.. rubric:: Summary ++ ++.. automembersummary:: juju.utils ++ ++.. rubric:: Reference ++ ++.. automodule:: juju.utils ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/api/modules.rst index 0000000,0000000..bf06f26 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/api/modules.rst @@@ -1,0 -1,0 +1,31 @@@ ++juju ++==== ++ ++It is recommended that you start with :doc:`juju.model` or :doc:`juju.controller`. ++If you need helpers to manage the asyncio loop, try :doc:`juju.loop`. ++ ++.. toctree:: ++ ++ juju.action ++ juju.annotation ++ juju.application ++ juju.cloud ++ juju.constraints ++ juju.controller ++ juju.delta ++ juju.errors ++ juju.exceptions ++ juju.juju ++ juju.loop ++ juju.machine ++ juju.model ++ juju.placement ++ juju.relation ++ juju.tag ++ juju.unit ++ juju.utils ++ ++.. automodule:: juju ++ :members: ++ :undoc-members: ++ :show-inheritance: diff --cc modules/libjuju/docs/changelog.rst index 0000000,0000000..9da0cdc new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/changelog.rst @@@ -1,0 -1,0 +1,130 @@@ ++Change Log ++---------- ++ ++0.6.0 ++^^^^^ ++Thu June 29 2017 ++ ++* Implement scp functionality (#149) ++* Add Unit.public_address property (#153) ++* Adds support for getting/setting config on a model (#152) ++ ++0.5.3 ++^^^^^ ++Thu June 22 2017 ++ ++* Improve handling of closed connections (#148) ++* Configurable and larger max message size (#146) ++ ++0.5.2 ++^^^^^ ++Wed June 14 2017 ++ ++* Fix deploying non-stable channels and explicit revs (#144) ++ ++0.5.1 ++^^^^^ ++Tue June 13 2017 ++ ++* Update schema for Juju 2.3 alpha1 (#142) ++* Improve API doc navigation and coverage (#141) ++* Add type info to Model.add_machine docs (#138) ++ ++0.5.0 ++^^^^^ ++Thu June 8 2017 ++ ++* Add machine status properties (#133) ++* Add model context manager (#128) ++* Implement Application.upgrade_charm method (#132) ++ ++0.4.3 ++^^^^^ ++Thu June 1 2017 ++ ++* Accept new / unknown API fields gracefully (#131) ++* Add support for new agent-version field in ModelInfo (#131) ++* Replace pip with pip3 in install instructions (#129) ++* Strip local:-prefix from local charm urls (#121) ++ ++0.4.2 ++^^^^^ ++Wed May 10 2017 ++ ++* Support (and prefer) per-controller macaroon files (#125) ++ ++0.4.1 ++^^^^^ ++Wed Apr 27 2017 ++ ++* Remove VERSION_MAP and rely on facade list from controller (#118) ++* Refactor connection task management to avoid cancels (#117) ++* Refactored login code to better handle redirects (#116) ++ ++0.4.0 ++^^^^^ ++Wed Apr 19 2017 ++ ++* Feature/api version support (#109) ++* Expanding controller.py with basic user functions, get_models and ++ destroy (#89) ++* Added Monitor class to Connection. (#105) ++* Support placement lists (#103) ++* Include resources from store when deploying (#102) ++* Allow underscore to dash translation when accessing model ++ attributes (#101) ++* Added controller to ssh fix. (#100) ++* Regen schema to pick up missing APIs ++* Improve error handling ++* Fix issue where we do not check to make sure that we are receiving the ++ correct response. ++* Retry calls to charmstore and increase timeout to 5s ++* Make connect_model and deploy a bit more friendly ++* Fix model name not including user ++* Implement Model.get_status ++* Add integration tests. ++ ++0.3.0 ++^^^^^ ++Mon Feb 27 2017 ++ ++* Fix docstrings for placement directives. ++* Implement Model.add_machine() ++* Bug fix - "to" parameter to Model.deploy() was broken ++* Add docs and examples for adding machines and containers and deploying ++ charms to them. ++* Make Machine.destroy() block the current coroutine, returning only after ++ the machine is actually removed from the remote model. This is more ++ consistent with the way the other apis work (e.g. Model.deploy(), ++ Application.add_unit(), etc). ++* Raise NotImplementedError in all unimplemented method stubs instead of ++ silently passing. ++ ++0.2.0 ++^^^^^ ++Thu Feb 16 2017 ++ ++* Add default ssh key to newly created model. ++* Add loop helpers and simplify examples/deploy.py ++* Add support for deploying local charms, and bundles containing local charm paths. ++* Add ability to get cloud name for controller. ++* Bug fix - fix wrong api used in Model.destroy_unit() ++* Add error detection in bundle deploy. ++ ++0.1.2 ++^^^^^ ++Thu Dec 22 2016 ++ ++* Bug fix - Include docs in package ++ ++0.1.1 ++^^^^^ ++Thu Dec 22 2016 ++ ++* Bug fix - Include VERSION file in package ++ ++0.1.0 ++^^^^^ ++Wed Dec 21 2016 ++ ++* Initial Release diff --cc modules/libjuju/docs/conf.py index 0000000,0000000..a95ec04 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/conf.py @@@ -1,0 -1,0 +1,303 @@@ ++# -*- coding: utf-8 -*- ++# ++# libjuju documentation build configuration file, created by ++# sphinx-quickstart on Thu May 19 11:21:38 2016. ++# ++# This file is execfile()d with the current directory set to its ++# containing dir. ++# ++# Note that not all possible configuration values are present in this ++# autogenerated file. ++# ++# All configuration values have a default; values that are commented out ++# serve to show the default. ++ ++import sys ++import os ++ ++from pathlib import Path ++ ++here = Path(__file__).absolute().parent ++version = (here.parent / 'VERSION').read_text().strip() ++ ++# If extensions (or modules to document with autodoc) are in another directory, ++# add these directories to sys.path here. If the directory is relative to the ++# documentation root, use os.path.abspath to make it absolute, like shown here. ++sys.path.insert(0, os.path.abspath('..')) ++ ++# -- General configuration ------------------------------------------------ ++ ++# If your documentation needs a minimal Sphinx version, state it here. ++#needs_sphinx = '1.0' ++ ++# Add any Sphinx extension module names here, as strings. They can be ++# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ++# ones. ++sys.path.append(os.path.abspath('_extensions/')) ++extensions = [ ++ 'sphinx.ext.autodoc', ++ 'sphinx.ext.autosummary', ++ 'sphinx.ext.intersphinx', ++ 'sphinx.ext.todo', ++ 'sphinx.ext.viewcode', ++ 'sphinxcontrib.asyncio', ++ 'automembersummary', ++] ++ ++# Add any paths that contain templates here, relative to this directory. ++templates_path = ['_templates'] ++ ++# The suffix(es) of source filenames. ++# You can specify multiple suffix as a list of string: ++# source_suffix = ['.rst', '.md'] ++source_suffix = '.rst' ++ ++# The encoding of source files. ++#source_encoding = 'utf-8-sig' ++ ++# The master toctree document. ++master_doc = 'index' ++ ++# General information about the project. ++project = u'juju' ++copyright = u'2016, Canonical Ltd.' ++author = u'Canonical' ++ ++# The version info for the project you're documenting, acts as replacement for ++# |version| and |release|, also used in various other places throughout the ++# built documents. ++# ++# The short X.Y version. ++version = version ++# The full version, including alpha/beta/rc tags. ++release = version ++ ++# The language for content autogenerated by Sphinx. Refer to documentation ++# for a list of supported languages. ++# ++# This is also used if you do content translation via gettext catalogs. ++# Usually you set "language" from the command line for these cases. ++language = None ++ ++# There are two options for replacing |today|: either, you set today to some ++# non-false value, then it is used: ++#today = '' ++# Else, today_fmt is used as the format for a strftime call. ++#today_fmt = '%B %d, %Y' ++ ++# List of patterns, relative to source directory, that match files and ++# directories to ignore when looking for source files. ++# This patterns also effect to html_static_path and html_extra_path ++exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] ++ ++# The reST default role (used for this markup: `text`) to use for all ++# documents. ++#default_role = None ++ ++# If true, '()' will be appended to :func: etc. cross-reference text. ++#add_function_parentheses = True ++ ++# If true, the current module name will be prepended to all description ++# unit titles (such as .. function::). ++#add_module_names = True ++ ++# If true, sectionauthor and moduleauthor directives will be shown in the ++# output. They are ignored by default. ++#show_authors = False ++ ++# The name of the Pygments (syntax highlighting) style to use. ++pygments_style = 'sphinx' ++ ++# A list of ignored prefixes for module index sorting. ++#modindex_common_prefix = [] ++ ++# If true, keep warnings as "system message" paragraphs in the built documents. ++#keep_warnings = False ++ ++# If true, `todo` and `todoList` produce output, else they produce nothing. ++todo_include_todos = True ++ ++ ++# -- Options for HTML output ---------------------------------------------- ++ ++# The theme to use for HTML and HTML Help pages. See the documentation for ++# a list of builtin themes. ++html_theme = 'sphinx_rtd_theme' ++ ++# Theme options are theme-specific and customize the look and feel of a theme ++# further. For a list of options available for each theme, see the ++# documentation. ++#html_theme_options = {} ++ ++# Add any paths that contain custom themes here, relative to this directory. ++#html_theme_path = [] ++ ++# The name for this set of Sphinx documents. ++# " v documentation" by default. ++#html_title = u'libjuju v0.0.0' ++ ++# A shorter title for the navigation bar. Default is the same as html_title. ++#html_short_title = None ++ ++# The name of an image file (relative to this directory) to place at the top ++# of the sidebar. ++#html_logo = None ++ ++# The name of an image file (relative to this directory) to use as a favicon of ++# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 ++# pixels large. ++#html_favicon = None ++ ++# Add any paths that contain custom static files (such as style sheets) here, ++# relative to this directory. They are copied after the builtin static files, ++# so a file named "default.css" will overwrite the builtin "default.css". ++html_static_path = ['_static'] ++ ++# Add any extra paths that contain custom files (such as robots.txt or ++# .htaccess) here, relative to this directory. These files are copied ++# directly to the root of the documentation. ++#html_extra_path = [] ++ ++# If not None, a 'Last updated on:' timestamp is inserted at every page ++# bottom, using the given strftime format. ++# The empty string is equivalent to '%b %d, %Y'. ++#html_last_updated_fmt = None ++ ++# If true, SmartyPants will be used to convert quotes and dashes to ++# typographically correct entities. ++#html_use_smartypants = True ++ ++# Custom sidebar templates, maps document names to template names. ++#html_sidebars = {} ++ ++# Additional templates that should be rendered to pages, maps page names to ++# template names. ++#html_additional_pages = {} ++ ++# If false, no module index is generated. ++#html_domain_indices = True ++ ++# If false, no index is generated. ++#html_use_index = True ++ ++# If true, the index is split into individual pages for each letter. ++#html_split_index = False ++ ++# If true, links to the reST sources are added to the pages. ++#html_show_sourcelink = True ++ ++# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. ++#html_show_sphinx = True ++ ++# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. ++#html_show_copyright = True ++ ++# If true, an OpenSearch description file will be output, and all pages will ++# contain a tag referring to it. The value of this option must be the ++# base URL from which the finished HTML is served. ++#html_use_opensearch = '' ++ ++# This is the file name suffix for HTML files (e.g. ".xhtml"). ++#html_file_suffix = None ++ ++# Language to be used for generating the HTML full-text search index. ++# Sphinx supports the following languages: ++# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' ++# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' ++#html_search_language = 'en' ++ ++# A dictionary with options for the search language support, empty by default. ++# 'ja' uses this config value. ++# 'zh' user can custom change `jieba` dictionary path. ++#html_search_options = {'type': 'default'} ++ ++# The name of a javascript file (relative to the configuration directory) that ++# implements a search results scorer. If empty, the default will be used. ++#html_search_scorer = 'scorer.js' ++ ++# Output file base name for HTML help builder. ++htmlhelp_basename = 'libjujudoc' ++ ++# -- Options for LaTeX output --------------------------------------------- ++ ++latex_elements = { ++# The paper size ('letterpaper' or 'a4paper'). ++#'papersize': 'letterpaper', ++ ++# The font size ('10pt', '11pt' or '12pt'). ++#'pointsize': '10pt', ++ ++# Additional stuff for the LaTeX preamble. ++#'preamble': '', ++ ++# Latex figure (float) alignment ++#'figure_align': 'htbp', ++} ++ ++# Grouping the document tree into LaTeX files. List of tuples ++# (source start file, target name, title, ++# author, documentclass [howto, manual, or own class]). ++latex_documents = [ ++ (master_doc, 'libjuju.tex', u'libjuju Documentation', ++ u'Canonical', 'manual'), ++] ++ ++# The name of an image file (relative to this directory) to place at the top of ++# the title page. ++#latex_logo = None ++ ++# For "manual" documents, if this is true, then toplevel headings are parts, ++# not chapters. ++#latex_use_parts = False ++ ++# If true, show page references after internal links. ++#latex_show_pagerefs = False ++ ++# If true, show URL addresses after external links. ++#latex_show_urls = False ++ ++# Documents to append as an appendix to all manuals. ++#latex_appendices = [] ++ ++# If false, no module index is generated. ++#latex_domain_indices = True ++ ++ ++# -- Options for manual page output --------------------------------------- ++ ++# One entry per manual page. List of tuples ++# (source start file, name, description, authors, manual section). ++man_pages = [ ++ (master_doc, 'libjuju', u'libjuju Documentation', ++ [author], 1) ++] ++ ++# If true, show URL addresses after external links. ++#man_show_urls = False ++ ++ ++# -- Options for Texinfo output ------------------------------------------- ++ ++# Grouping the document tree into Texinfo files. List of tuples ++# (source start file, target name, title, author, ++# dir menu entry, description, category) ++texinfo_documents = [ ++ (master_doc, 'libjuju', u'libjuju Documentation', ++ author, 'libjuju', 'One line description of project.', ++ 'Miscellaneous'), ++] ++ ++# Documents to append as an appendix to all manuals. ++#texinfo_appendices = [] ++ ++# If false, no module index is generated. ++#texinfo_domain_indices = True ++ ++# How to display URL addresses: 'footnote', 'no', or 'inline'. ++#texinfo_show_urls = 'footnote' ++ ++# If true, do not generate a @detailmenu in the "Top" node's menu. ++#texinfo_no_detailmenu = False ++ ++def setup(app): ++ app.add_stylesheet('custom.css') diff --cc modules/libjuju/docs/index.rst index 0000000,0000000..b4b075f new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/index.rst @@@ -1,0 -1,0 +1,32 @@@ ++.. libjuju documentation master file, created by ++ sphinx-quickstart on Thu May 19 11:21:38 2016. ++ You can adapt this file completely to your liking, but it should at least ++ contain the root `toctree` directive. ++ ++ ++.. include:: readme.rst ++ ++ ++Table of Contents ++----------------- ++ ++.. toctree:: ++ :glob: ++ :maxdepth: 3 ++ ++ narrative/index ++ API Docs ++ Internal API Docs ++ upstream-updates/index ++ ++ ++.. include:: changelog.rst ++ ++ ++Indices and tables ++================== ++ ++* :ref:`genindex` ++* :ref:`modindex` ++* :ref:`search` ++ diff --cc modules/libjuju/docs/narrative/application.rst index 0000000,0000000..1565e5f new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/narrative/application.rst @@@ -1,0 -1,0 +1,136 @@@ ++Applications ++============ ++For api docs, see :class:`juju.application.Application`. ++ ++ ++Deploying ++--------- ++To deploy a new application, connect a model and then call its ++:meth:`~juju.model.Model.deploy` method. An ++:class:`~juju.application.Application` instance is returned. ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ model = Model() ++ await model.connect_current() ++ ++ mysql_app = await model.deploy( ++ # If a revision number is not included in the charm url, ++ # the latest revision from the Charm Store will be used. ++ 'cs:mysql-55', ++ application_name='mysql', ++ series='trusty', ++ channel='stable', ++ config={ ++ 'tuning-level': 'safest', ++ }, ++ constraints={ ++ 'mem': 256 * MB, ++ }, ++ ) ++ ++ ++Deploying a Local Charm ++----------------------- ++To deploy a local charm, pass the charm directory path to ++`Model.deploy()`. ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ model = Model() ++ await model.connect_current() ++ ++ # Deploy a local charm using a path to the charm directory ++ await model.deploy( ++ '/home/tvansteenburgh/src/charms/ubuntu', ++ application_name='ubuntu', ++ series='trusty', ++ ) ++ ++ ++Adding Units ++------------ ++To add units to a deployed application, use the ++:meth:`juju.application.Application.add_units` method. A list of the newly ++added units (:class:`~juju.unit.Unit` objects) is returned. ++ ++.. code:: python ++ ++ ubuntu_app = await model.deploy( ++ 'ubuntu', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ unit_a, unit_b = await ubuntu_app.add_units(count=2) ++ ++ ++Updating Config and Constraints ++------------------------------- ++Example showing how to update configuration and constraints on a deployed ++application. The `mysql_app` object is an instance of ++:class:`juju.application.Application`. ++ ++.. code:: python ++ ++ MB = 1024 * 1024 ++ ++ # Update and check app config ++ await mysql_app.set_config({'tuning-level': 'fast'}) ++ config = await mysql_app.get_config() ++ ++ assert(config['tuning-level']['value'] == 'fast') ++ ++ # update and check app constraints ++ await mysql_app.set_constraints({'mem': 512 * MB}) ++ constraints = await mysql_app.get_constraints() ++ ++ assert(constraints['mem'] == 512 * MB) ++ ++ ++Adding and Removing Relations ++----------------------------- ++The :meth:`juju.application.Application.add_relation` method returns a ++:class:`juju.relation.Relation` instance. ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ model = Model() ++ await model.connect_current() ++ ++ # Deploy mysql-master application ++ mysql_master = await model.deploy( ++ 'cs:mysql-55', ++ application_name='mysql-master', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ # Deploy mysql-slave application ++ mysql_slave = await model.deploy( ++ 'cs:mysql-55', ++ application_name='mysql-slave', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ # Add the master-slave relation ++ relation = await mysql_master.add_relation( ++ # Name of the relation on the local (mysql-master) side ++ 'master', ++ # Name of the app:relation on the remote side ++ 'mysql-slave:slave', ++ ) ++ ++ # Remove the relation ++ await mysql_master.remove_relation( ++ 'master', ++ 'mysql-slave:slave', ++ ) diff --cc modules/libjuju/docs/narrative/controller.rst index 0000000,0000000..2da0e7b new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/narrative/controller.rst @@@ -1,0 -1,0 +1,100 @@@ ++Controllers ++=========== ++A Juju controller provides websocket endpoints for itself and each of its ++models. In order to do anything useful, the juju lib must connect to one of ++these endpoints. ++ ++Connecting to the controller endpoint is useful if you want to programmatically ++create a new model. If the model you want to use already exists, you can ++connect directly to it (see :doc:`model`). ++ ++For api docs, see :class:`juju.controller.Controller`. ++ ++ ++Connecting to the Current Controller ++------------------------------------ ++Connect to the currently active Juju controller (the one returned by ++`juju switch`). This only works if you have the Juju CLI client installed. ++ ++.. code:: python ++ ++ from juju.controller import Controller ++ ++ controller = Controller() ++ await controller.connect_current() ++ ++ ++Connecting to a Named Controller ++-------------------------------- ++Connect to a controller by name. ++ ++.. code:: python ++ ++ from juju.controller import Controller ++ ++ controller = Controller() ++ await controller.connect_controller('mycontroller') ++ ++ ++Connecting with Username/Password Authentication ++------------------------------------------------ ++The most flexible, but also most verbose, way to connect is using the API ++endpoint url and credentials directly. This method does NOT require the Juju ++CLI client to be installed. ++ ++.. code:: python ++ ++ from juju.controller import Controller ++ ++ controller = Controller() ++ ++ controller_endpoint = '10.0.4.171:17070' ++ username = 'admin' ++ password = 'f53f08cfc32a2e257fe5393271d89d62' ++ ++ # Left out for brevity, but if you have a cert string you should pass it in. ++ # You can copy the cert from the output of The `juju show-controller` ++ # command. ++ cacert = None ++ ++ await controller.connect( ++ controller_endpoint, ++ username, ++ password, ++ cacert, ++ ) ++ ++ ++Connecting with Macaroon Authentication ++--------------------------------------- ++To connect to a shared controller, you'll need ++to use macaroon authentication. The simplest example is shown below, and uses ++already-discharged macaroons from the local filesystem. This will work if you ++have the Juju CLI installed. ++ ++.. note:: ++ ++ The library does not yet contain support for fetching and discharging ++ macaroons. Until it does, if you want to use macaroon auth, you'll need ++ to supply already-discharged macaroons yourself. ++ ++.. code:: python ++ ++ from juju.client.connection import get_macaroons() ++ from juju.controller import Controller ++ ++ controller = Controller() ++ ++ controller_endpoint = '10.0.4.171:17070' ++ username = None ++ password = None ++ cacert = None ++ macaroons = get_macaroons() ++ ++ await controller.connect( ++ controller_endpoint, ++ username, ++ password, ++ cacert, ++ macaroons, ++ ) diff --cc modules/libjuju/docs/narrative/index.rst index 0000000,0000000..eb77e4c new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/narrative/index.rst @@@ -1,0 -1,0 +1,11 @@@ ++Narrative Docs ++============== ++ ++.. toctree:: ++ :glob: ++ :maxdepth: 2 ++ ++ controller ++ model ++ application ++ unit diff --cc modules/libjuju/docs/narrative/model.rst index 0000000,0000000..57dbc81 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/narrative/model.rst @@@ -1,0 -1,0 +1,306 @@@ ++Models ++====== ++A Juju controller provides websocket endpoints for each of its ++models. In order to do anything useful with a model, the juju lib must ++connect to one of these endpoints. There are several ways to do this. ++ ++For api docs, see :class:`juju.model.Model`. ++ ++ ++Connecting to the Current Model ++------------------------------- ++Connect to the currently active Juju model (the one returned by ++`juju switch`). This only works if you have the Juju CLI client installed. ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ model = Model() ++ await model.connect_current() ++ ++ ++Connecting to a Named Model ++--------------------------- ++Connect to a model by name, using the same format as that returned from the ++`juju switch` command. The accepted format is '[controller:][user/]model'. ++This only works if you have the Juju CLI client installed. ++ ++.. code:: python ++ ++ # $ juju switch ++ # juju-2.0.1:admin/libjuju ++ ++ from juju.model import Model ++ ++ model = Model() ++ await model.connect_model('juju-2.0.1:admin/libjuju') ++ ++ ++Connecting with Username/Password Authentication ++------------------------------------------------ ++The most flexible, but also most verbose, way to connect is using the API ++endpoint url and credentials directly. This method does NOT require the Juju ++CLI client to be installed. ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ model = Model() ++ ++ controller_endpoint = '10.0.4.171:17070' ++ model_uuid = 'e8399ac7-078c-4817-8e5e-32316d55b083' ++ username = 'admin' ++ password = 'f53f08cfc32a2e257fe5393271d89d62' ++ ++ # Left out for brevity, but if you have a cert string you should pass it in. ++ # You can copy the cert from the output of The `juju show-controller` ++ # command. ++ cacert = None ++ ++ await model.connect( ++ controller_endpoint, ++ model_uuid, ++ username, ++ password, ++ cacert, ++ ) ++ ++ ++Connecting with Macaroon Authentication ++--------------------------------------- ++To connect to a shared model, or a model an a shared controller, you'll need ++to use macaroon authentication. The simplest example is shown below, and uses ++already-discharged macaroons from the local filesystem. This will work if you ++have the Juju CLI installed. ++ ++.. note:: ++ ++ The library does not yet contain support for fetching and discharging ++ macaroons. Until it does, if you want to use macaroon auth, you'll need ++ to supply already-discharged macaroons yourself. ++ ++.. code:: python ++ ++ from juju.client.connection import get_macaroons() ++ from juju.model import Model ++ ++ model = Model() ++ ++ controller_endpoint = '10.0.4.171:17070' ++ model_uuid = 'e8399ac7-078c-4817-8e5e-32316d55b083' ++ username = None ++ password = None ++ cacert = None ++ macaroons = get_macaroons() ++ ++ await model.connect( ++ controller_endpoint, ++ model_uuid, ++ username, ++ password, ++ cacert, ++ macaroons, ++ ) ++ ++ ++Creating and Destroying a Model ++------------------------------- ++Example of creating a new model and then destroying it. See ++:meth:`juju.controller.Controller.add_model` and ++:meth:`juju.controller.Controller.destroy_model` for more info. ++ ++.. code:: python ++ ++ from juju.controller import Controller ++ ++ controller = Controller() ++ await controller.connect_current() ++ ++ # Create our new model ++ model = await controller.add_model( ++ 'mymodel', # name of your new model ++ ) ++ ++ # Do stuff with our model... ++ ++ # Destroy the model ++ await model.disconnect() ++ await controller.destroy_model(model.info.uuid) ++ model = None ++ ++ ++Adding Machines and Containers ++------------------------------ ++To add a machine or container, connect to a model and then call its ++:meth:`~juju.model.Model.add_machine` method. A ++:class:`~juju.machine.Machine` instance is returned. The machine id ++can be used to deploy a charm to a specific machine or container. ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ MB = 1 ++ GB = 1024 ++ ++ ++ model = Model() ++ await model.connect_current() ++ ++ # add a new default machine ++ machine1 = await model.add_machine() ++ ++ # add a machine with constraints, disks, and series specified ++ machine2 = await model.add_machine( ++ constraints={ ++ 'mem': 256 * MB, ++ }, ++ disks=[{ ++ 'pool': 'rootfs', ++ 'size': 10 * GB, ++ 'count': 1, ++ }], ++ series='xenial', ++ ) ++ ++ # add a lxd container to machine2 ++ machine3 = await model.add_machine( ++ 'lxd:{}'.format(machine2.id)) ++ ++ # deploy charm to the lxd container ++ application = await model.deploy( ++ 'ubuntu-10', ++ application_name='ubuntu', ++ series='xenial', ++ channel='stable', ++ to=machine3.id ++ ) ++ ++ # remove application ++ await application.remove() ++ ++ # destroy machines - note that machine3 must be destroyed before machine2 ++ # since it's a container on machine2 ++ await machine3.destroy(force=True) ++ await machine2.destroy(force=True) ++ await machine1.destroy(force=True) ++ ++ ++Reacting to Changes in a Model ++------------------------------ ++To watch for and respond to changes in a model, register an observer with the ++model. The easiest way to do this is by creating a ++:class:`juju.model.ModelObserver` subclass. ++ ++.. code:: python ++ ++ from juju.model import Model, ModelObserver ++ ++ class MyModelObserver(ModelObserver): ++ async def on_change(self, delta, old, new, model): ++ # The raw change data (dict) from the websocket. ++ print(delta.data) ++ ++ # The entity type (str) affected by this change. ++ # One of ('action', 'application', 'annotation', 'machine', ++ # 'unit', 'relation') ++ print(delta.entity) ++ ++ # The type (str) of change. ++ # One of ('add', 'change', 'remove') ++ print(delta.type) ++ ++ # The 'old' and 'new' parameters are juju.model.ModelEntity ++ # instances which represent an entity in the model both before ++ # this change was applied (old) and after (new). ++ ++ # If an entity is being added to the model, the 'old' param ++ # will be None. ++ if delta.type == 'add': ++ assert(old is None) ++ ++ # If an entity is being removed from the model, the 'new' param ++ # will be None. ++ if delta.type == 'remove': ++ assert(new is None) ++ ++ # The 'old' and 'new' parameters, when not None, will be instances ++ # of a juju.model.ModelEntity subclass. The type of the subclass ++ # depends on the value of 'delta.entity', for example: ++ # ++ # delta.entity type ++ # ------------ ---- ++ # 'action' -> juju.action.Action ++ # 'application' -> juju.application.Application ++ # 'annotation' -> juju.annotation.Annotation ++ # 'machine' -> juju.machine.Machine ++ # 'unit' -> juju.unit.Unit ++ # 'relation' -> juju.relation.Relation ++ ++ # Finally, the 'model' parameter is a reference to the ++ # juju.model.Model instance to which this observer is attached. ++ print(id(model)) ++ ++ ++ model = Model() ++ await model.connect_current() ++ ++ model.add_observer(MyModelObserver()) ++ ++ ++Every change in the model will result in a call to the `on_change()` ++method of your observer(s). ++ ++To target your code more precisely, define method names that correspond ++to the entity and type of change that you wish to handle. ++ ++.. code:: python ++ ++ from juju.model import Model, ModelObserver ++ ++ class MyModelObserver(ModelObserver): ++ async def on_application_change(self, delta, old, new, model): ++ # Both 'old' and 'new' params will be instances of ++ # juju.application.Application ++ pass ++ ++ async def on_unit_remove(self, delta, old, new, model): ++ # Since a unit is being removed, the 'new' param will always ++ # be None in this handler. The 'old' param will be an instance ++ # of juju.unit.Unit - the state of the unit before it was removed. ++ pass ++ ++ async def on_machine_add(self, delta, old, new, model): ++ # Since a machine is being added, the 'old' param will always be ++ # None in this handler. The 'new' param will be an instance of ++ # juju.machine.Machine. ++ pass ++ ++ async def on_change(self, delta, old, new, model): ++ # The catch-all handler - will be called whenever a more ++ # specific handler method is not defined. ++ ++ ++Any :class:`juju.model.ModelEntity` object can be observed directly by ++registering callbacks on the object itself. ++ ++.. code:: python ++ ++ import logging ++ ++ async def on_app_change(delta, old, new, model): ++ logging.debug('App changed: %r', new) ++ ++ async def on_app_remove(delta, old, new, model): ++ logging.debug('App removed: %r', old) ++ ++ ubuntu_app = await model.deploy( ++ 'ubuntu', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ubuntu_app.on_change(on_app_change) ++ ubuntu_app.on_remove(on_app_remove) diff --cc modules/libjuju/docs/narrative/unit.rst index 0000000,0000000..5d6b48d new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/narrative/unit.rst @@@ -1,0 -1,0 +1,65 @@@ ++Units ++===== ++For api docs, see :class:`juju.unit.Unit`. ++ ++ ++Running Commands ++---------------- ++Run arbitrary commands on a unit with the ++:meth:`juju.unit.Unit.run` method. This method blocks ++the current coroutine until a result is available, and ++returns a :class:`juju.action.Action` instance. ++ ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ model = Model() ++ await model.connect_current() ++ ++ app = await model.deploy( ++ 'ubuntu', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ for unit in app.units: ++ action = await unit.run('unit-get public-address') ++ print(action.results) ++ ++ action = await unit.run('uname -a') ++ print(action.results) ++ ++ ++Running Actions ++--------------- ++Run actions on a unit with the ++:meth:`juju.unit.Unit.run_action` method. This method ++returns a :class:`juju.action.Action` instance immediately. To block until ++the action completes, use the :meth:`juju.action.Action.wait` method, as ++in the example below. ++ ++ ++.. code:: python ++ ++ from juju.model import Model ++ ++ model = Model() ++ await model.connect_current() ++ ++ app = await model.deploy( ++ 'git', ++ application_name='git', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ for unit in app.units: ++ # run the 'add-repo' action, passing a 'repo' param ++ action = await unit.run_action('add-repo', repo='myrepo') ++ # wait for the action to complete ++ action = await action.wait() ++ ++ print(action.results) diff --cc modules/libjuju/docs/readme.rst index 0000000,0000000..ecfbc5a new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/readme.rst @@@ -1,0 -1,0 +1,95 @@@ ++A Python library for Juju ++========================= ++ ++Source code: https://github.com/juju/python-libjuju ++ ++Bug reports: https://github.com/juju/python-libjuju/issues ++ ++Documentation: https://pythonlibjuju.readthedocs.io/en/latest/ ++ ++ ++Requirements ++------------ ++ ++* Python 3.5+ ++* Juju 2.0+ ++ ++ ++Design Notes ++------------ ++ ++* Asynchronous - uses asyncio and async/await features of python 3.5 ++* Websocket-level bindings are programmatically generated (indirectly) from the ++ Juju golang code, ensuring full api coverage ++* Provides an OO layer which encapsulates much of the websocket api and ++ provides familiar nouns and verbs (e.g. Model.deploy(), Application.add_unit(), ++ etc.) ++ ++ ++Installation ++------------ ++ ++.. code:: bash ++ ++ pip3 install juju ++ ++ ++Quickstart ++---------- ++Here's a simple example that shows basic usage of the library. The example ++connects to the currently active Juju model, deploys a single unit of the ++ubuntu charm, then exits. ++ ++More examples can be found in the `examples/` directory of the source tree, ++and in the documentation. ++ ++ ++.. code:: python ++ ++ #!/usr/bin/python3.5 ++ ++ import asyncio ++ import logging ++ ++ from juju import loop ++ from juju.model import Model ++ ++ ++ async def deploy(): ++ # Create a Model instance. We need to connect our Model to a Juju api ++ # server before we can use it. ++ model = Model() ++ ++ # Connect to the currently active Juju model ++ await model.connect_current() ++ ++ # Deploy a single unit of the ubuntu charm, using revision 0 from the ++ # stable channel of the Charm Store. ++ ubuntu_app = await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='xenial', ++ channel='stable', ++ ) ++ ++ # Disconnect from the api server and cleanup. ++ model.disconnect() ++ ++ ++ def main(): ++ # Set logging level to debug so we can see verbose output from the ++ # juju library. ++ logging.basicConfig(level=logging.DEBUG) ++ ++ # Quiet logging from the websocket library. If you want to see ++ # everything sent over the wire, set this to DEBUG. ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ ++ # Run the deploy coroutine in an asyncio event loop, using a helper ++ # that abstracts loop creation and teardown. ++ loop.run(deploy()) ++ ++ ++ if __name__ == '__main__': ++ main() diff --cc modules/libjuju/docs/requirements.txt index 0000000,0000000..06377bf new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/requirements.txt @@@ -1,0 -1,0 +1,7 @@@ ++websockets ++pyyaml ++theblues ++python-dateutil ++sphinx ++sphinxcontrib-asyncio ++sphinx_rtd_theme diff --cc modules/libjuju/docs/upstream-updates/index.rst index 0000000,0000000..52099e6 new file mode 100644 --- /dev/null +++ b/modules/libjuju/docs/upstream-updates/index.rst @@@ -1,0 -1,0 +1,66 @@@ ++Upstream Updates ++================ ++ ++Updating the facade and definitions code generated from the schema ++to reflect changes in upstream Juju consists of two steps: ++ ++* Creating a new `schemas-juju-.json` file from the Juju code-base ++* Generating the libjuju Python code from that schema ++ ++Rarely, you may also have to add or update an override. ++ ++ ++Creating a Schema File ++---------------------- ++ ++First, you will need to fetch SchemaGen_ and a copy of the Juju source. ++Once your copy of the Juju source is at the version you want to update to ++(probably the `develop` branch, or a release tag) and you have updated ++and reinstalled SchemaGen to reflect those changes, you just need to send ++the output into a file in the libjuju repository: ++ ++.. code:: bash ++ ++ schemagen > juju/client/schemas-juju-2.2-rc1.json ++ ++The version number you use in the filename should match the upstream ++version of Juju. You should then also move the `latest` pointer to ++the new file: ++ ++.. code:: bash ++ ++ rm juju/client/schemas-juju-latest.json ++ ln -s schemas-juju-2.2-rc1.json juju/client/schemas-juju-latest.json ++ ++ ++Generating the Python Code ++-------------------------- ++ ++Once you have a new schema file, you can update the Python code ++using the `client` make target: ++ ++.. code:: bash ++ ++ make client ++ ++You should expect to see updates to the `juju/client/_definitions.py` file, ++as well as one or more of the `juju/client/_clientX.py` files, depending on ++which facades were touched. ++ ++ ++Overrides ++--------- ++ ++It should be quite rare, but occasionally the generated Python code does ++not capture all of the logic needed to properly parse the output from the API ++or may otherwise need some small amount of tweaking. This is what the ++`juju/client/overrides.py` file is for. An example of this is the `Number` ++type, which isn't standard JSON and must be parsed slightly differently. ++ ++At the top of that file are two lists, `__all__` and `__patches__`. The ++former replaces entire class implementations, while the latter patches ++the attributes of the override classes into the matching generated class, ++leaving the rest of the generated class untouched. ++ ++ ++.. _SchemaGen: https://github.com/juju/schemagen diff --cc modules/libjuju/examples/action.py index 0000000,0000000..0f25647 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/action.py @@@ -1,0 -1,0 +1,50 @@@ ++""" ++This example: ++ ++1. Connects to current model and resets it. ++2. Deploys a git unit. ++3. Runs an action against the unit. ++4. Waits for the action results to come back, then exits. ++ ++""" ++import asyncio ++import logging ++ ++from juju import loop ++from juju.model import Model ++ ++ ++async def run_action(unit): ++ logging.debug('Running action on unit %s', unit.name) ++ ++ # unit.run() returns a juju.action.Action instance ++ action = await unit.run_action('add-repo', repo='myrepo') ++ # wait for the action to complete ++ action = await action.wait() ++ ++ logging.debug("Action results: %s", action.results) ++ ++ ++async def main(): ++ model = Model() ++ await model.connect_current() ++ await model.reset(force=True) ++ ++ app = await model.deploy( ++ 'git', ++ application_name='git', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ for unit in app.units: ++ await run_action(unit) ++ ++ await model.disconnect() ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ loop.run(main()) diff --cc modules/libjuju/examples/add_machine.py index 0000000,0000000..8ae2d40 new file mode 100755 --- /dev/null +++ b/modules/libjuju/examples/add_machine.py @@@ -1,0 -1,0 +1,70 @@@ ++#!/usr/bin/env python3.5 ++ ++""" ++This example: ++ ++1. Connects to the current model ++2. Creates two machines and a lxd container ++3. Deploys charm to the lxd container ++ ++""" ++import logging ++ ++from juju import loop ++from juju.model import Model ++ ++MB = 1 ++GB = 1024 ++ ++ ++async def main(): ++ model = Model() ++ await model.connect_current() ++ ++ try: ++ # add a new default machine ++ machine1 = await model.add_machine() ++ # add a machine with constraints, disks, and series ++ machine2 = await model.add_machine( ++ constraints={ ++ 'mem': 256 * MB, ++ }, ++ disks=[{ ++ 'pool': 'rootfs', ++ 'size': 10 * GB, ++ 'count': 1, ++ }], ++ series='xenial', ++ ) ++ # add a lxd container to machine2 ++ machine3 = await model.add_machine( ++ 'lxd:{}'.format(machine2.id)) ++ ++ # deploy charm to the lxd container ++ application = await model.deploy( ++ 'ubuntu-10', ++ application_name='ubuntu', ++ series='xenial', ++ channel='stable', ++ to=machine3.id ++ ) ++ ++ await model.block_until( ++ lambda: all(unit.workload_status == 'active' ++ for unit in application.units)) ++ ++ await application.remove() ++ ++ await machine3.destroy(force=True) ++ await machine2.destroy(force=True) ++ await machine1.destroy(force=True) ++ finally: ++ await model.disconnect() ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ ++ loop.run(main()) diff --cc modules/libjuju/examples/add_model.py index 0000000,0000000..3e46490 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/add_model.py @@@ -1,0 -1,0 +1,66 @@@ ++""" ++This example: ++ ++1. Creates a model on the current controller ++2. Deploys a charm to it. ++3. Attempts to ssh into the charm ++ ++""" ++from juju import loop ++from juju import utils ++from juju.controller import Controller ++import asyncio ++from logging import getLogger ++import uuid ++ ++LOG = getLogger(__name__) ++ ++ ++async def main(): ++ controller = Controller() ++ print("Connecting to controller") ++ await controller.connect_current() ++ ++ try: ++ model_name = "addmodeltest-{}".format(uuid.uuid4()) ++ print("Adding model {}".format(model_name)) ++ model = await controller.add_model(model_name) ++ ++ print('Deploying ubuntu') ++ application = await model.deploy( ++ 'ubuntu-10', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ print('Waiting for active') ++ await asyncio.sleep(10) ++ await model.block_until( ++ lambda: all(unit.workload_status == 'active' ++ for unit in application.units)) ++ ++ print("Verifying that we can ssh into the created model") ++ ret = await utils.execute_process( ++ 'juju', 'ssh', '-m', model_name, 'ubuntu/0', 'ls /', log=LOG) ++ assert ret ++ ++ print('Removing ubuntu') ++ await application.remove() ++ ++ print("Destroying model") ++ await controller.destroy_model(model.info.uuid) ++ ++ except Exception: ++ LOG.exception( ++ "Test failed! Model {} may not be cleaned up".format(model_name)) ++ ++ finally: ++ print('Disconnecting from controller') ++ if model: ++ await model.disconnect() ++ await controller.disconnect() ++ ++ ++if __name__ == '__main__': ++ loop.run(main()) diff --cc modules/libjuju/examples/allwatcher.py index 0000000,0000000..c78d689 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/allwatcher.py @@@ -1,0 -1,0 +1,31 @@@ ++""" ++This example: ++ ++1. Connects to the current model ++2. Starts an AllWatcher ++3. Prints all changes received from the AllWatcher ++4. Runs forever (kill with Ctrl-C) ++ ++""" ++import asyncio ++import logging ++ ++from juju.client.connection import Connection ++from juju.client import client ++from juju import loop ++ ++ ++async def watch(): ++ conn = await Connection.connect_current() ++ allwatcher = client.AllWatcherFacade.from_connection(conn) ++ while True: ++ change = await allwatcher.Next() ++ for delta in change.deltas: ++ print(delta.deltas) ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ # Run loop until the process is manually stopped (watch will loop ++ # forever). ++ loop.run(watch()) diff --cc modules/libjuju/examples/config.py index 0000000,0000000..bacc840 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/config.py @@@ -1,0 -1,0 +1,55 @@@ ++""" ++This example: ++ ++1. Connects to the current model ++2. Resets it ++3. Deploys a charm and prints its config and constraints ++ ++""" ++import asyncio ++import logging ++ ++from juju.model import Model ++from juju import loop ++ ++log = logging.getLogger(__name__) ++ ++MB = 1 ++ ++ ++async def main(): ++ model = Model() ++ await model.connect_current() ++ await model.reset(force=True) ++ ++ ubuntu_app = await model.deploy( ++ 'mysql', ++ application_name='mysql', ++ series='trusty', ++ channel='stable', ++ config={ ++ 'tuning-level': 'safest', ++ }, ++ constraints={ ++ 'mem': 256 * MB, ++ }, ++ ) ++ ++ # update and check app config ++ await ubuntu_app.set_config({'tuning-level': 'fast'}) ++ config = await ubuntu_app.get_config() ++ assert(config['tuning-level']['value'] == 'fast') ++ ++ # update and check app constraints ++ await ubuntu_app.set_constraints({'mem': 512 * MB}) ++ constraints = await ubuntu_app.get_constraints() ++ assert(constraints['mem'] == 512 * MB) ++ ++ await model.disconnect() ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ loop.run(main()) diff --cc modules/libjuju/examples/controller.py index 0000000,0000000..6002f68 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/controller.py @@@ -1,0 -1,0 +1,41 @@@ ++""" ++This example: ++ ++1. Connects to current controller. ++2. Creates a new model. ++3. Deploys an application on the new model. ++4. Disconnects from the model ++5. Destroys the model ++ ++""" ++import asyncio ++import logging ++ ++from juju.controller import Controller ++from juju import loop ++ ++ ++async def main(): ++ controller = Controller() ++ await controller.connect_current() ++ model = await controller.add_model( ++ 'my-test-model', ++ 'aws', ++ 'aws-tim', ++ ) ++ await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ await model.disconnect() ++ await controller.destroy_model(model.info.uuid) ++ await controller.disconnect() ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ loop.run(main()) diff --cc modules/libjuju/examples/deploy.py index 0000000,0000000..e6c306a new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/deploy.py @@@ -1,0 -1,0 +1,40 @@@ ++""" ++This example: ++ ++1. Connects to the current model ++2. Deploy a charm and waits until it reports itself active ++3. Destroys the unit and application ++ ++""" ++from juju import loop ++from juju.model import Model ++ ++ ++async def main(): ++ model = Model() ++ print('Connecting to model') ++ await model.connect_current() ++ ++ try: ++ print('Deploying ubuntu') ++ application = await model.deploy( ++ 'ubuntu-10', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ print('Waiting for active') ++ await model.block_until( ++ lambda: all(unit.workload_status == 'active' ++ for unit in application.units)) ++ ++ print('Removing ubuntu') ++ await application.remove() ++ finally: ++ print('Disconnecting from model') ++ await model.disconnect() ++ ++ ++if __name__ == '__main__': ++ loop.run(main()) diff --cc modules/libjuju/examples/fullstatus.py index 0000000,0000000..cdaf51d new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/fullstatus.py @@@ -1,0 -1,0 +1,23 @@@ ++import asyncio ++ ++from juju.client.connection import Connection ++from juju.client.client import ClientFacade ++from juju import loop ++ ++async def status(): ++ conn = await Connection.connect_current() ++ client = ClientFacade.from_connection(conn) ++ ++ patterns = None ++ status = await client.FullStatus(patterns) ++ await conn.close() ++ ++ print('Applications:', list(status.applications.keys())) ++ print('Machines:', list(status.machines.keys())) ++ print('Relations:', status.relations) ++ ++ return status ++ ++if __name__ == '__main__': ++ loop.run(status()) ++ diff --cc modules/libjuju/examples/future.py index 0000000,0000000..0180325 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/future.py @@@ -1,0 -1,0 +1,48 @@@ ++""" ++This example doesn't work - it demonstrates features that don't exist yet. ++ ++""" ++import asyncio ++import logging ++ ++from juju.model import Model ++from juju import loop ++ ++ ++async def main(): ++ model = Model() ++ await model.connect_current() ++ await model.reset(force=True) ++ ++ goal_state = Model.from_yaml('bundle-like-thing') ++ ubuntu_app = await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ubuntu_app.on_unit_added(callback=lambda unit: True) ++ ++ await model.deploy( ++ 'nrpe-11', ++ application_name='nrpe', ++ series='trusty', ++ channel='stable', ++ num_units=0, ++ ) ++ await model.add_relation( ++ 'ubuntu', ++ 'nrpe', ++ ) ++ ++ result, ok = await model.block_until( ++ lambda: model.matches(goal_state), ++ timeout=600 ++ ) ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ loop.run(main()) diff --cc modules/libjuju/examples/leadership.py index 0000000,0000000..b231003 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/leadership.py @@@ -1,0 -1,0 +1,28 @@@ ++""" ++This example: ++ ++1. Connects to the current model. ++2. Prints out leadership status for all deployed units in the model. ++3. Cleanly disconnects. ++ ++""" ++import asyncio ++ ++from juju.model import Model ++from juju import loop ++ ++async def report_leadership(): ++ model = Model() ++ await model.connect_current() ++ ++ print("Leadership: ") ++ for app in model.applications.values(): ++ for unit in app.units: ++ print("{}: {}".format( ++ unit.name, await unit.is_leader_from_status())) ++ ++ await model.disconnect() ++ ++ ++if __name__ == '__main__': ++ loop.run(report_leadership()) diff --cc modules/libjuju/examples/livemodel.py index 0000000,0000000..47eb999 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/livemodel.py @@@ -1,0 -1,0 +1,32 @@@ ++""" ++This example: ++ ++1. Connects to the current model ++2. Watches the model and prints all changes ++3. Runs forever (kill with Ctrl-C) ++ ++""" ++import asyncio ++ ++from juju.model import Model ++from juju import loop ++ ++ ++async def on_model_change(delta, old, new, model): ++ print(delta.entity, delta.type, delta.data) ++ print(old) ++ print(new) ++ print(model) ++ ++ ++async def watch_model(): ++ model = Model() ++ await model.connect_current() ++ ++ model.add_observer(on_model_change) ++ ++ ++if __name__ == '__main__': ++ # Run loop until the process is manually stopped (watch_model will loop ++ # forever). ++ loop.run(watch_model()) diff --cc modules/libjuju/examples/localcharm.py index 0000000,0000000..978703e new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/localcharm.py @@@ -1,0 -1,0 +1,34 @@@ ++""" ++This example shows how to deploy a local charm. It: ++ ++1. Connects to current model. ++2. Uploads a local charm (directory on filesystem) to the model. ++3. Deploys the uploaded charm. ++ ++""" ++import asyncio ++import logging ++ ++from juju.model import Model ++from juju import loop ++ ++ ++async def main(): ++ model = Model() ++ await model.connect_current() ++ ++ # Deploy a local charm using a path to the charm directory ++ await model.deploy( ++ '/home/tvansteenburgh/src/charms/ubuntu', ++ application_name='ubuntu', ++ series='trusty', ++ ) ++ ++ await model.disconnect() ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ loop.run(main()) diff --cc modules/libjuju/examples/relate.py index 0000000,0000000..8f1e708 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/relate.py @@@ -1,0 -1,0 +1,98 @@@ ++""" ++This example: ++ ++1. Connects to the current model ++2. Resets it ++3. Deploys two charms and relates them ++4. Waits for units to be idle, then exits ++ ++""" ++import asyncio ++import logging ++ ++from juju.model import Model, ModelObserver ++from juju import loop ++ ++ ++class MyRemoveObserver(ModelObserver): ++ async def on_change(self, delta, old, new, model): ++ if delta.type == 'remove': ++ assert(new.latest() == new) ++ assert(new.next() is None) ++ assert(new.dead) ++ assert(new.current) ++ assert(new.connected) ++ assert(new.previous().dead) ++ assert(not new.previous().current) ++ assert(not new.previous().connected) ++ ++ ++class MyModelObserver(ModelObserver): ++ _shutting_down = False ++ ++ async def on_change(self, delta, old, new, model): ++ if model.units and model.all_units_idle() and not self._shutting_down: ++ self._shutting_down = True ++ logging.debug('All units idle, disconnecting') ++ await model.reset(force=True) ++ await model.disconnect() ++ ++ ++async def main(): ++ model = Model() ++ await model.connect_current() ++ ++ model.add_observer(MyRemoveObserver()) ++ await model.reset(force=True) ++ model.add_observer(MyModelObserver()) ++ ++ ubuntu_app = await model.deploy( ++ 'ubuntu', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ubuntu_app.on_change(asyncio.coroutine( ++ lambda delta, old_app, new_app, model: ++ print('App changed: {}'.format(new_app.entity_id)) ++ )) ++ ubuntu_app.on_remove(asyncio.coroutine( ++ lambda delta, old_app, new_app, model: ++ print('App removed: {}'.format(old_app.entity_id)) ++ )) ++ ubuntu_app.on_unit_add(asyncio.coroutine( ++ lambda delta, old_unit, new_unit, model: ++ print('Unit added: {}'.format(new_unit.entity_id)) ++ )) ++ ubuntu_app.on_unit_remove(asyncio.coroutine( ++ lambda delta, old_unit, new_unit, model: ++ print('Unit removed: {}'.format(old_unit.entity_id)) ++ )) ++ unit_a, unit_b = await ubuntu_app.add_units(count=2) ++ unit_a.on_change(asyncio.coroutine( ++ lambda delta, old_unit, new_unit, model: ++ print('Unit changed: {}'.format(new_unit.entity_id)) ++ )) ++ await model.deploy( ++ 'nrpe', ++ application_name='nrpe', ++ series='trusty', ++ channel='stable', ++ # subordinates must be deployed without units ++ num_units=0, ++ ) ++ my_relation = await model.add_relation( ++ 'ubuntu', ++ 'nrpe', ++ ) ++ my_relation.on_remove(asyncio.coroutine( ++ lambda delta, old_rel, new_rel, model: ++ print('Relation removed: {}'.format(old_rel.endpoints)) ++ )) ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ loop.run(main()) diff --cc modules/libjuju/examples/unitrun.py index 0000000,0000000..3dfacd6 new file mode 100644 --- /dev/null +++ b/modules/libjuju/examples/unitrun.py @@@ -1,0 -1,0 +1,47 @@@ ++""" ++This example: ++ ++1. Connects to current model and resets it. ++2. Deploys one ubuntu unit. ++3. Runs an action against the unit. ++4. Waits for the action results to come back, then exits. ++ ++""" ++import asyncio ++import logging ++ ++from juju.model import Model ++from juju import loop ++ ++ ++async def run_command(unit): ++ logging.debug('Running command on unit %s', unit.name) ++ ++ # unit.run() returns a juju.action.Action instance ++ action = await unit.run('unit-get public-address') ++ logging.debug("Action results: %s", action.results) ++ ++ ++async def main(): ++ model = Model() ++ await model.connect_current() ++ await model.reset(force=True) ++ ++ app = await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ for unit in app.units: ++ await run_command(unit) ++ ++ await model.disconnect() ++ ++ ++if __name__ == '__main__': ++ logging.basicConfig(level=logging.DEBUG) ++ ws_logger = logging.getLogger('websockets.protocol') ++ ws_logger.setLevel(logging.INFO) ++ loop.run(main()) diff --cc modules/libjuju/juju/__init__.py index 0000000,0000000..e69de29 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/__init__.py diff --cc modules/libjuju/juju/action.py index 0000000,0000000..7a136a7 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/action.py @@@ -1,0 -1,0 +1,10 @@@ ++from . import model ++ ++ ++class Action(model.ModelEntity): ++ @property ++ def status(self): ++ return self.data['status'] ++ ++ async def wait(self): ++ return await self.model.wait_for_action(self.id) diff --cc modules/libjuju/juju/annotation.py index 0000000,0000000..73c9b1c new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/annotation.py @@@ -1,0 -1,0 +1,9 @@@ ++import logging ++ ++from . import model ++ ++log = logging.getLogger(__name__) ++ ++ ++class Annotation(model.ModelEntity): ++ pass diff --cc modules/libjuju/juju/application.py index 0000000,0000000..8719a62 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/application.py @@@ -1,0 -1,0 +1,391 @@@ ++import asyncio ++import logging ++ ++from . import model ++from .client import client ++from .errors import JujuError ++from .placement import parse as parse_placement ++ ++log = logging.getLogger(__name__) ++ ++ ++class Application(model.ModelEntity): ++ @property ++ def _unit_match_pattern(self): ++ return r'^{}.*$'.format(self.entity_id) ++ ++ def on_unit_add(self, callable_): ++ """Add a "unit added" observer to this entity, which will be called ++ whenever a unit is added to this application. ++ ++ """ ++ self.model.add_observer( ++ callable_, 'unit', 'add', self._unit_match_pattern) ++ ++ def on_unit_remove(self, callable_): ++ """Add a "unit removed" observer to this entity, which will be called ++ whenever a unit is removed from this application. ++ ++ """ ++ self.model.add_observer( ++ callable_, 'unit', 'remove', self._unit_match_pattern) ++ ++ @property ++ def units(self): ++ return [ ++ unit for unit in self.model.units.values() ++ if unit.application == self.name ++ ] ++ ++ @property ++ def status(self): ++ """Get the application status, as set by the charm's leader. ++ ++ """ ++ return self.safe_data['status']['current'] ++ ++ @property ++ def status_message(self): ++ """Get the application status message, as set by the charm's leader. ++ ++ """ ++ return self.safe_data['status']['message'] ++ ++ @property ++ def tag(self): ++ return 'application-%s' % self.name ++ ++ async def add_relation(self, local_relation, remote_relation): ++ """Add a relation to another application. ++ ++ :param str local_relation: Name of relation on this application ++ :param str remote_relation: Name of relation on the other ++ application in the form '[:]' ++ ++ """ ++ if ':' not in local_relation: ++ local_relation = '{}:{}'.format(self.name, local_relation) ++ ++ return await self.model.add_relation(local_relation, remote_relation) ++ ++ async def add_unit(self, count=1, to=None): ++ """Add one or more units to this application. ++ ++ :param int count: Number of units to add ++ :param str to: Placement directive, e.g.:: ++ '23' - machine 23 ++ 'lxc:7' - new lxc container on machine 7 ++ '24/lxc/3' - lxc container 3 or machine 24 ++ ++ If None, a new machine is provisioned. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Adding %s unit%s to %s', ++ count, '' if count == 1 else 's', self.name) ++ ++ result = await app_facade.AddUnits( ++ application=self.name, ++ placement=parse_placement(to) if to else None, ++ num_units=count, ++ ) ++ ++ return await asyncio.gather(*[ ++ asyncio.ensure_future(self.model._wait_for_new('unit', unit_id)) ++ for unit_id in result.units ++ ]) ++ ++ add_units = add_unit ++ ++ def allocate(self, budget, value): ++ """Allocate budget to this application. ++ ++ :param str budget: Name of budget ++ :param int value: Budget limit ++ ++ """ ++ raise NotImplementedError() ++ ++ def attach(self, resource_name, file_path): ++ """Upload a file as a resource for this application. ++ ++ :param str resource: Name of the resource ++ :param str file_path: Path to the file to upload ++ ++ """ ++ raise NotImplementedError() ++ ++ def collect_metrics(self): ++ """Collect metrics on this application. ++ ++ """ ++ raise NotImplementedError() ++ ++ async def destroy_relation(self, local_relation, remote_relation): ++ """Remove a relation to another application. ++ ++ :param str local_relation: Name of relation on this application ++ :param str remote_relation: Name of relation on the other ++ application in the form '[:]' ++ ++ """ ++ if ':' not in local_relation: ++ local_relation = '{}:{}'.format(self.name, local_relation) ++ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Destroying relation %s <-> %s', local_relation, remote_relation) ++ ++ return await app_facade.DestroyRelation([ ++ local_relation, remote_relation]) ++ remove_relation = destroy_relation ++ ++ async def destroy_unit(self, *unit_names): ++ """Destroy units by name. ++ ++ """ ++ return await self.model.destroy_units(*unit_names) ++ destroy_units = destroy_unit ++ ++ async def destroy(self): ++ """Remove this application from the model. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Destroying %s', self.name) ++ ++ return await app_facade.Destroy(self.name) ++ remove = destroy ++ ++ async def expose(self): ++ """Make this application publicly available over the network. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Exposing %s', self.name) ++ ++ return await app_facade.Expose(self.name) ++ ++ async def get_config(self): ++ """Return the configuration settings dict for this application. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Getting config for %s', self.name) ++ ++ return (await app_facade.Get(self.name)).config ++ ++ async def get_constraints(self): ++ """Return the machine constraints dict for this application. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Getting constraints for %s', self.name) ++ ++ result = (await app_facade.Get(self.name)).constraints ++ return vars(result) if result else result ++ ++ def get_actions(self, schema=False): ++ """Get actions defined for this application. ++ ++ :param bool schema: Return the full action schema ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_resources(self, details=False): ++ """Return resources for this application. ++ ++ :param bool details: Include detailed info about resources used by each ++ unit ++ ++ """ ++ raise NotImplementedError() ++ ++ async def run(self, command, timeout=None): ++ """Run command on all units for this application. ++ ++ :param str command: The command to run ++ :param int timeout: Time to wait before command is considered failed ++ ++ """ ++ action = client.ActionFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Running `%s` on all units of %s', command, self.name) ++ ++ # TODO this should return a list of Actions ++ return await action.Run( ++ [self.name], ++ command, ++ [], ++ timeout, ++ [], ++ ) ++ ++ async def set_annotations(self, annotations): ++ """Set annotations on this application. ++ ++ :param annotations map[string]string: the annotations as key/value ++ pairs. ++ ++ """ ++ log.debug('Updating annotations on application %s', self.name) ++ ++ self.ann_facade = client.AnnotationsFacade.from_connection( ++ self.connection) ++ ++ ann = client.EntityAnnotations( ++ entity=self.tag, ++ annotations=annotations, ++ ) ++ return await self.ann_facade.Set([ann]) ++ ++ async def set_config(self, config, to_default=False): ++ """Set configuration options for this application. ++ ++ :param config: Dict of configuration to set ++ :param bool to_default: Set application options to default values ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Setting config for %s: %s', self.name, config) ++ ++ return await app_facade.Set(self.name, config) ++ ++ async def set_constraints(self, constraints): ++ """Set machine constraints for this application. ++ ++ :param dict constraints: Dict of machine constraints ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Setting constraints for %s: %s', self.name, constraints) ++ ++ return await app_facade.SetConstraints(self.name, constraints) ++ ++ def set_meter_status(self, status, info=None): ++ """Set the meter status on this status. ++ ++ :param str status: Meter status, e.g. 'RED', 'AMBER' ++ :param str info: Extra info message ++ ++ """ ++ raise NotImplementedError() ++ ++ def set_plan(self, plan_name): ++ """Set the plan for this application, effective immediately. ++ ++ :param str plan_name: Name of plan ++ ++ """ ++ raise NotImplementedError() ++ ++ async def unexpose(self): ++ """Remove public availability over the network for this application. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Unexposing %s', self.name) ++ ++ return await app_facade.Unexpose(self.name) ++ ++ def update_allocation(self, allocation): ++ """Update existing allocation for this application. ++ ++ :param int allocation: The allocation to set ++ ++ """ ++ raise NotImplementedError() ++ ++ async def upgrade_charm( ++ self, channel=None, force_series=False, force_units=False, ++ path=None, resources=None, revision=None, switch=None): ++ """Upgrade the charm for this application. ++ ++ :param str channel: Channel to use when getting the charm from the ++ charm store, e.g. 'development' ++ :param bool force_series: Upgrade even if series of deployed ++ application is not supported by the new charm ++ :param bool force_units: Upgrade all units immediately, even if in ++ error state ++ :param str path: Uprade to a charm located at path ++ :param dict resources: Dictionary of resource name/filepath pairs ++ :param int revision: Explicit upgrade revision ++ :param str switch: Crossgrade charm url ++ ++ """ ++ # TODO: Support local upgrades ++ if path is not None: ++ raise NotImplementedError("path option is not implemented") ++ if resources is not None: ++ raise NotImplementedError("resources option is not implemented") ++ ++ if switch is not None and revision is not None: ++ raise ValueError("switch and revision are mutually exclusive") ++ ++ client_facade = client.ClientFacade.from_connection(self.connection) ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ if switch is not None: ++ charm_url = switch ++ if not charm_url.startswith('cs:'): ++ charm_url = 'cs:' + charm_url ++ else: ++ charm_url = self.data['charm-url'] ++ charm_url = charm_url.rpartition('-')[0] ++ if revision is not None: ++ charm_url = "%s-%d" % (charm_url, revision) ++ else: ++ charmstore = self.model.charmstore ++ entity = await charmstore.entity(charm_url, channel=channel) ++ charm_url = entity['Id'] ++ ++ if charm_url == self.data['charm-url']: ++ raise JujuError('already running charm "%s"' % charm_url) ++ ++ await client_facade.AddCharm( ++ url=charm_url, ++ channel=channel ++ ) ++ ++ await app_facade.SetCharm( ++ application=self.entity_id, ++ channel=channel, ++ charm_url=charm_url, ++ config_settings=None, ++ config_settings_yaml=None, ++ force_series=force_series, ++ force_units=force_units, ++ resource_ids=None, ++ storage_constraints=None ++ ) ++ ++ await self.model.block_until( ++ lambda: self.data['charm-url'] == charm_url ++ ) ++ ++ async def get_metrics(self): ++ """Get metrics for this application's units. ++ ++ :return: Dictionary of unit_name:metrics ++ ++ """ ++ return await self.model.get_metrics(self.tag) diff --cc modules/libjuju/juju/client/__init__.py index 0000000,0000000..e69de29 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/__init__.py diff --cc modules/libjuju/juju/client/_client.py index 0000000,0000000..d510e11 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/_client.py @@@ -1,0 -1,0 +1,367 @@@ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++from juju.client._definitions import * ++ ++from juju.client import _client1, _client2, _client3, _client4, _client5 ++ ++ ++CLIENTS = { ++ "1": _client1, ++ "2": _client2, ++ "3": _client3, ++ "4": _client4, ++ "5": _client5 ++} ++ ++ ++ ++def lookup_facade(name, version): ++ """ ++ Given a facade name and version, attempt to pull that facade out ++ of the correct client.py file. ++ ++ """ ++ try: ++ facade = getattr(CLIENTS[str(version)], name) ++ except KeyError: ++ raise ImportError("No facades found for version {}".format(version)) ++ except AttributeError: ++ raise ImportError( ++ "No facade with name '{}' in version {}".format(name, version)) ++ return facade ++ ++ ++ ++class TypeFactory: ++ @classmethod ++ def from_connection(cls, connection): ++ """ ++ Given a connected Connection object, return an initialized and ++ connected instance of an API Interface matching the name of ++ this class. ++ ++ @param connection: initialized Connection object. ++ ++ """ ++ version = connection.facades[cls.__name__[:-6]] ++ ++ c = lookup_facade(cls.__name__, version) ++ c = c() ++ c.connect(connection) ++ ++ return c ++ ++ ++class ActionFacade(TypeFactory): ++ pass ++ ++ ++class AgentFacade(TypeFactory): ++ pass ++ ++ ++class AgentToolsFacade(TypeFactory): ++ pass ++ ++ ++class AllModelWatcherFacade(TypeFactory): ++ pass ++ ++ ++class AllWatcherFacade(TypeFactory): ++ pass ++ ++ ++class AnnotationsFacade(TypeFactory): ++ pass ++ ++ ++class ApplicationFacade(TypeFactory): ++ pass ++ ++ ++class ApplicationRelationsWatcherFacade(TypeFactory): ++ pass ++ ++ ++class ApplicationScalerFacade(TypeFactory): ++ pass ++ ++ ++class BackupsFacade(TypeFactory): ++ pass ++ ++ ++class BlockFacade(TypeFactory): ++ pass ++ ++ ++class BundleFacade(TypeFactory): ++ pass ++ ++ ++class CharmRevisionUpdaterFacade(TypeFactory): ++ pass ++ ++ ++class CharmsFacade(TypeFactory): ++ pass ++ ++ ++class CleanerFacade(TypeFactory): ++ pass ++ ++ ++class ClientFacade(TypeFactory): ++ pass ++ ++ ++class CloudFacade(TypeFactory): ++ pass ++ ++ ++class ControllerFacade(TypeFactory): ++ pass ++ ++ ++class DeployerFacade(TypeFactory): ++ pass ++ ++ ++class DiscoverSpacesFacade(TypeFactory): ++ pass ++ ++ ++class DiskManagerFacade(TypeFactory): ++ pass ++ ++ ++class EntityWatcherFacade(TypeFactory): ++ pass ++ ++ ++class FilesystemAttachmentsWatcherFacade(TypeFactory): ++ pass ++ ++ ++class FirewallerFacade(TypeFactory): ++ pass ++ ++ ++class HighAvailabilityFacade(TypeFactory): ++ pass ++ ++ ++class HostKeyReporterFacade(TypeFactory): ++ pass ++ ++ ++class ImageManagerFacade(TypeFactory): ++ pass ++ ++ ++class ImageMetadataFacade(TypeFactory): ++ pass ++ ++ ++class InstancePollerFacade(TypeFactory): ++ pass ++ ++ ++class KeyManagerFacade(TypeFactory): ++ pass ++ ++ ++class KeyUpdaterFacade(TypeFactory): ++ pass ++ ++ ++class LeadershipServiceFacade(TypeFactory): ++ pass ++ ++ ++class LifeFlagFacade(TypeFactory): ++ pass ++ ++ ++class LogForwardingFacade(TypeFactory): ++ pass ++ ++ ++class LoggerFacade(TypeFactory): ++ pass ++ ++ ++class MachineActionsFacade(TypeFactory): ++ pass ++ ++ ++class MachineManagerFacade(TypeFactory): ++ pass ++ ++ ++class MachineUndertakerFacade(TypeFactory): ++ pass ++ ++ ++class MachinerFacade(TypeFactory): ++ pass ++ ++ ++class MeterStatusFacade(TypeFactory): ++ pass ++ ++ ++class MetricsAdderFacade(TypeFactory): ++ pass ++ ++ ++class MetricsDebugFacade(TypeFactory): ++ pass ++ ++ ++class MetricsManagerFacade(TypeFactory): ++ pass ++ ++ ++class MigrationFlagFacade(TypeFactory): ++ pass ++ ++ ++class MigrationMasterFacade(TypeFactory): ++ pass ++ ++ ++class MigrationMinionFacade(TypeFactory): ++ pass ++ ++ ++class MigrationStatusWatcherFacade(TypeFactory): ++ pass ++ ++ ++class MigrationTargetFacade(TypeFactory): ++ pass ++ ++ ++class ModelConfigFacade(TypeFactory): ++ pass ++ ++ ++class ModelManagerFacade(TypeFactory): ++ pass ++ ++ ++class NotifyWatcherFacade(TypeFactory): ++ pass ++ ++ ++class PayloadsFacade(TypeFactory): ++ pass ++ ++ ++class PayloadsHookContextFacade(TypeFactory): ++ pass ++ ++ ++class PingerFacade(TypeFactory): ++ pass ++ ++ ++class ProvisionerFacade(TypeFactory): ++ pass ++ ++ ++class ProxyUpdaterFacade(TypeFactory): ++ pass ++ ++ ++class RebootFacade(TypeFactory): ++ pass ++ ++ ++class RelationUnitsWatcherFacade(TypeFactory): ++ pass ++ ++ ++class RemoteApplicationWatcherFacade(TypeFactory): ++ pass ++ ++ ++class RemoteRelationsWatcherFacade(TypeFactory): ++ pass ++ ++ ++class ResourcesFacade(TypeFactory): ++ pass ++ ++ ++class ResourcesHookContextFacade(TypeFactory): ++ pass ++ ++ ++class ResumerFacade(TypeFactory): ++ pass ++ ++ ++class RetryStrategyFacade(TypeFactory): ++ pass ++ ++ ++class SSHClientFacade(TypeFactory): ++ pass ++ ++ ++class SingularFacade(TypeFactory): ++ pass ++ ++ ++class SpacesFacade(TypeFactory): ++ pass ++ ++ ++class StatusHistoryFacade(TypeFactory): ++ pass ++ ++ ++class StorageFacade(TypeFactory): ++ pass ++ ++ ++class StorageProvisionerFacade(TypeFactory): ++ pass ++ ++ ++class StringsWatcherFacade(TypeFactory): ++ pass ++ ++ ++class SubnetsFacade(TypeFactory): ++ pass ++ ++ ++class UndertakerFacade(TypeFactory): ++ pass ++ ++ ++class UnitAssignerFacade(TypeFactory): ++ pass ++ ++ ++class UniterFacade(TypeFactory): ++ pass ++ ++ ++class UpgraderFacade(TypeFactory): ++ pass ++ ++ ++class UserManagerFacade(TypeFactory): ++ pass ++ ++ ++class VolumeAttachmentsWatcherFacade(TypeFactory): ++ pass ++ ++ diff --cc modules/libjuju/juju/client/_client1.py index 0000000,0000000..3774056 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/_client1.py @@@ -1,0 -1,0 +1,6645 @@@ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++from juju.client.facade import Type, ReturnMapping ++from juju.client._definitions import * ++ ++ ++class AgentToolsFacade(Type): ++ name = 'AgentTools' ++ version = 1 ++ schema = {'properties': {'UpdateToolsAvailable': {'type': 'object'}}, 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def UpdateToolsAvailable(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='AgentTools', request='UpdateToolsAvailable', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class AllWatcherFacade(Type): ++ name = 'AllWatcher' ++ version = 1 ++ schema = {'definitions': {'AllWatcherNextResults': {'additionalProperties': False, ++ 'properties': {'deltas': {'items': {'$ref': '#/definitions/Delta'}, ++ 'type': 'array'}}, ++ 'required': ['deltas'], ++ 'type': 'object'}, ++ 'Delta': {'additionalProperties': False, ++ 'properties': {'entity': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'removed': {'type': 'boolean'}}, ++ 'required': ['removed', 'entity'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherNextResults'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AllWatcherNextResults) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~Delta]<~Delta> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='AllWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='AllWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ApplicationRelationsWatcherFacade(Type): ++ name = 'ApplicationRelationsWatcher' ++ version = 1 ++ schema = {'definitions': {'ApplicationRelationsChange': {'additionalProperties': False, ++ 'properties': {'changed': {'items': {'$ref': '#/definitions/RelationChange'}, ++ 'type': 'array'}, ++ 'removed': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ApplicationRelationsWatchResult': {'additionalProperties': False, ++ 'properties': {'ApplicationRelationsWatcherId': {'type': 'string'}, ++ 'changes': {'$ref': '#/definitions/ApplicationRelationsChange'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['ApplicationRelationsWatcherId'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'RelationChange': {'additionalProperties': False, ++ 'properties': {'changedunits': {'patternProperties': {'.*': {'$ref': '#/definitions/RelationUnitChange'}}, ++ 'type': 'object'}, ++ 'departedunits': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'id': {'type': 'integer'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['id', 'life'], ++ 'type': 'object'}, ++ 'RelationUnitChange': {'additionalProperties': False, ++ 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/ApplicationRelationsWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ApplicationRelationsWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('ApplicationRelationsChange'), _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ApplicationRelationsWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ApplicationRelationsWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ApplicationScalerFacade(Type): ++ name = 'ApplicationScaler' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}}, ++ 'properties': {'Rescale': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Rescale(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ApplicationScaler', request='Rescale', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResult) ++ async def Watch(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ApplicationScaler', request='Watch', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class BackupsFacade(Type): ++ name = 'Backups' ++ version = 1 ++ schema = {'definitions': {'BackupsCreateArgs': {'additionalProperties': False, ++ 'properties': {'notes': {'type': 'string'}}, ++ 'required': ['notes'], ++ 'type': 'object'}, ++ 'BackupsInfoArgs': {'additionalProperties': False, ++ 'properties': {'id': {'type': 'string'}}, ++ 'required': ['id'], ++ 'type': 'object'}, ++ 'BackupsListArgs': {'additionalProperties': False, ++ 'type': 'object'}, ++ 'BackupsListResult': {'additionalProperties': False, ++ 'properties': {'list': {'items': {'$ref': '#/definitions/BackupsMetadataResult'}, ++ 'type': 'array'}}, ++ 'required': ['list'], ++ 'type': 'object'}, ++ 'BackupsMetadataResult': {'additionalProperties': False, ++ 'properties': {'ca-cert': {'type': 'string'}, ++ 'ca-private-key': {'type': 'string'}, ++ 'checksum': {'type': 'string'}, ++ 'checksum-format': {'type': 'string'}, ++ 'finished': {'format': 'date-time', ++ 'type': 'string'}, ++ 'hostname': {'type': 'string'}, ++ 'id': {'type': 'string'}, ++ 'machine': {'type': 'string'}, ++ 'model': {'type': 'string'}, ++ 'notes': {'type': 'string'}, ++ 'series': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'started': {'format': 'date-time', ++ 'type': 'string'}, ++ 'stored': {'format': 'date-time', ++ 'type': 'string'}, ++ 'version': {'$ref': '#/definitions/Number'}}, ++ 'required': ['id', ++ 'checksum', ++ 'checksum-format', ++ 'size', ++ 'stored', ++ 'started', ++ 'finished', ++ 'notes', ++ 'model', ++ 'machine', ++ 'hostname', ++ 'version', ++ 'series', ++ 'ca-cert', ++ 'ca-private-key'], ++ 'type': 'object'}, ++ 'BackupsRemoveArgs': {'additionalProperties': False, ++ 'properties': {'id': {'type': 'string'}}, ++ 'required': ['id'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'RestoreArgs': {'additionalProperties': False, ++ 'properties': {'backup-id': {'type': 'string'}}, ++ 'required': ['backup-id'], ++ 'type': 'object'}}, ++ 'properties': {'Create': {'properties': {'Params': {'$ref': '#/definitions/BackupsCreateArgs'}, ++ 'Result': {'$ref': '#/definitions/BackupsMetadataResult'}}, ++ 'type': 'object'}, ++ 'FinishRestore': {'type': 'object'}, ++ 'Info': {'properties': {'Params': {'$ref': '#/definitions/BackupsInfoArgs'}, ++ 'Result': {'$ref': '#/definitions/BackupsMetadataResult'}}, ++ 'type': 'object'}, ++ 'List': {'properties': {'Params': {'$ref': '#/definitions/BackupsListArgs'}, ++ 'Result': {'$ref': '#/definitions/BackupsListResult'}}, ++ 'type': 'object'}, ++ 'PrepareRestore': {'type': 'object'}, ++ 'Remove': {'properties': {'Params': {'$ref': '#/definitions/BackupsRemoveArgs'}}, ++ 'type': 'object'}, ++ 'Restore': {'properties': {'Params': {'$ref': '#/definitions/RestoreArgs'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(BackupsMetadataResult) ++ async def Create(self, notes): ++ ''' ++ notes : str ++ Returns -> typing.Union[str, int, _ForwardRef('Number')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Backups', request='Create', version=1, params=_params) ++ _params['notes'] = notes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def FinishRestore(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Backups', request='FinishRestore', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BackupsMetadataResult) ++ async def Info(self, id_): ++ ''' ++ id_ : str ++ Returns -> typing.Union[str, int, _ForwardRef('Number')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Backups', request='Info', version=1, params=_params) ++ _params['id'] = id_ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BackupsListResult) ++ async def List(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~BackupsMetadataResult]<~BackupsMetadataResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Backups', request='List', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def PrepareRestore(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Backups', request='PrepareRestore', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Remove(self, id_): ++ ''' ++ id_ : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Backups', request='Remove', version=1, params=_params) ++ _params['id'] = id_ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Restore(self, backup_id): ++ ''' ++ backup_id : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Backups', request='Restore', version=1, params=_params) ++ _params['backup-id'] = backup_id ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class BundleFacade(Type): ++ name = 'Bundle' ++ version = 1 ++ schema = {'definitions': {'BundleChange': {'additionalProperties': False, ++ 'properties': {'args': {'items': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'type': 'array'}, ++ 'id': {'type': 'string'}, ++ 'method': {'type': 'string'}, ++ 'requires': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['id', ++ 'method', ++ 'args', ++ 'requires'], ++ 'type': 'object'}, ++ 'BundleChangesParams': {'additionalProperties': False, ++ 'properties': {'yaml': {'type': 'string'}}, ++ 'required': ['yaml'], ++ 'type': 'object'}, ++ 'BundleChangesResults': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChange'}, ++ 'type': 'array'}, ++ 'errors': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}}, ++ 'properties': {'GetChanges': {'properties': {'Params': {'$ref': '#/definitions/BundleChangesParams'}, ++ 'Result': {'$ref': '#/definitions/BundleChangesResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(BundleChangesResults) ++ async def GetChanges(self, yaml): ++ ''' ++ yaml : str ++ Returns -> typing.Sequence<+T_co>[~BundleChange]<~BundleChange> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Bundle', request='GetChanges', version=1, params=_params) ++ _params['yaml'] = yaml ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ClientFacade(Type): ++ name = 'Client' ++ version = 1 ++ schema = {'definitions': {'APIHostPortsResult': {'additionalProperties': False, ++ 'properties': {'servers': {'items': {'items': {'$ref': '#/definitions/HostPort'}, ++ 'type': 'array'}, ++ 'type': 'array'}}, ++ 'required': ['servers'], ++ 'type': 'object'}, ++ 'AddCharm': {'additionalProperties': False, ++ 'properties': {'channel': {'type': 'string'}, ++ 'url': {'type': 'string'}}, ++ 'required': ['url', 'channel'], ++ 'type': 'object'}, ++ 'AddCharmWithAuthorization': {'additionalProperties': False, ++ 'properties': {'channel': {'type': 'string'}, ++ 'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'url': {'type': 'string'}}, ++ 'required': ['url', ++ 'channel', ++ 'macaroon'], ++ 'type': 'object'}, ++ 'AddMachineParams': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'}, ++ 'type': 'array'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'container-type': {'type': 'string'}, ++ 'disks': {'items': {'$ref': '#/definitions/Constraints'}, ++ 'type': 'array'}, ++ 'hardware-characteristics': {'$ref': '#/definitions/HardwareCharacteristics'}, ++ 'instance-id': {'type': 'string'}, ++ 'jobs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'nonce': {'type': 'string'}, ++ 'parent-id': {'type': 'string'}, ++ 'placement': {'$ref': '#/definitions/Placement'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['series', ++ 'constraints', ++ 'jobs', ++ 'parent-id', ++ 'container-type', ++ 'instance-id', ++ 'nonce', ++ 'hardware-characteristics', ++ 'addresses'], ++ 'type': 'object'}, ++ 'AddMachines': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/AddMachineParams'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'AddMachinesResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'machine': {'type': 'string'}}, ++ 'required': ['machine'], ++ 'type': 'object'}, ++ 'AddMachinesResults': {'additionalProperties': False, ++ 'properties': {'machines': {'items': {'$ref': '#/definitions/AddMachinesResult'}, ++ 'type': 'array'}}, ++ 'required': ['machines'], ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'AgentVersionResult': {'additionalProperties': False, ++ 'properties': {'version': {'$ref': '#/definitions/Number'}}, ++ 'required': ['version'], ++ 'type': 'object'}, ++ 'AllWatcherId': {'additionalProperties': False, ++ 'properties': {'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'ApplicationStatus': {'additionalProperties': False, ++ 'properties': {'can-upgrade-to': {'type': 'string'}, ++ 'charm': {'type': 'string'}, ++ 'err': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'exposed': {'type': 'boolean'}, ++ 'life': {'type': 'string'}, ++ 'meter-statuses': {'patternProperties': {'.*': {'$ref': '#/definitions/MeterStatus'}}, ++ 'type': 'object'}, ++ 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'series': {'type': 'string'}, ++ 'status': {'$ref': '#/definitions/DetailedStatus'}, ++ 'subordinate-to': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}}, ++ 'type': 'object'}, ++ 'workload-version': {'type': 'string'}}, ++ 'required': ['charm', ++ 'series', ++ 'exposed', ++ 'life', ++ 'relations', ++ 'can-upgrade-to', ++ 'subordinate-to', ++ 'units', ++ 'meter-statuses', ++ 'status', ++ 'workload-version'], ++ 'type': 'object'}, ++ 'Binary': {'additionalProperties': False, ++ 'properties': {'Arch': {'type': 'string'}, ++ 'Number': {'$ref': '#/definitions/Number'}, ++ 'Series': {'type': 'string'}}, ++ 'required': ['Number', 'Series', 'Arch'], ++ 'type': 'object'}, ++ 'BundleChange': {'additionalProperties': False, ++ 'properties': {'args': {'items': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'type': 'array'}, ++ 'id': {'type': 'string'}, ++ 'method': {'type': 'string'}, ++ 'requires': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['id', ++ 'method', ++ 'args', ++ 'requires'], ++ 'type': 'object'}, ++ 'BundleChangesParams': {'additionalProperties': False, ++ 'properties': {'yaml': {'type': 'string'}}, ++ 'required': ['yaml'], ++ 'type': 'object'}, ++ 'BundleChangesResults': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/BundleChange'}, ++ 'type': 'array'}, ++ 'errors': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'BytesResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'ConfigValue': {'additionalProperties': False, ++ 'properties': {'source': {'type': 'string'}, ++ 'value': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'required': ['value', 'source'], ++ 'type': 'object'}, ++ 'Constraints': {'additionalProperties': False, ++ 'properties': {'Count': {'type': 'integer'}, ++ 'Pool': {'type': 'string'}, ++ 'Size': {'type': 'integer'}}, ++ 'required': ['Pool', 'Size', 'Count'], ++ 'type': 'object'}, ++ 'DestroyMachines': {'additionalProperties': False, ++ 'properties': {'force': {'type': 'boolean'}, ++ 'machine-names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['machine-names', 'force'], ++ 'type': 'object'}, ++ 'DetailedStatus': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'err': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'kind': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'version': {'type': 'string'}}, ++ 'required': ['status', ++ 'info', ++ 'data', ++ 'since', ++ 'kind', ++ 'version', ++ 'life'], ++ 'type': 'object'}, ++ 'EndpointStatus': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'role': {'type': 'string'}, ++ 'subordinate': {'type': 'boolean'}}, ++ 'required': ['application', ++ 'name', ++ 'role', ++ 'subordinate'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatus': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['status', 'info', 'since'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'FindToolsParams': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'major': {'type': 'integer'}, ++ 'minor': {'type': 'integer'}, ++ 'number': {'$ref': '#/definitions/Number'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['number', ++ 'major', ++ 'minor', ++ 'arch', ++ 'series'], ++ 'type': 'object'}, ++ 'FindToolsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'list': {'items': {'$ref': '#/definitions/Tools'}, ++ 'type': 'array'}}, ++ 'required': ['list'], ++ 'type': 'object'}, ++ 'FullStatus': {'additionalProperties': False, ++ 'properties': {'applications': {'patternProperties': {'.*': {'$ref': '#/definitions/ApplicationStatus'}}, ++ 'type': 'object'}, ++ 'machines': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}}, ++ 'type': 'object'}, ++ 'model': {'$ref': '#/definitions/ModelStatusInfo'}, ++ 'relations': {'items': {'$ref': '#/definitions/RelationStatus'}, ++ 'type': 'array'}, ++ 'remote-applications': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteApplicationStatus'}}, ++ 'type': 'object'}}, ++ 'required': ['model', ++ 'machines', ++ 'applications', ++ 'remote-applications', ++ 'relations'], ++ 'type': 'object'}, ++ 'GetConstraintsResults': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'HardwareCharacteristics': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cpu-cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'History': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'statuses': {'items': {'$ref': '#/definitions/DetailedStatus'}, ++ 'type': 'array'}}, ++ 'required': ['statuses'], ++ 'type': 'object'}, ++ 'HostPort': {'additionalProperties': False, ++ 'properties': {'Address': {'$ref': '#/definitions/Address'}, ++ 'port': {'type': 'integer'}}, ++ 'required': ['Address', 'port'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineHardware': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'MachineStatus': {'additionalProperties': False, ++ 'properties': {'agent-status': {'$ref': '#/definitions/DetailedStatus'}, ++ 'constraints': {'type': 'string'}, ++ 'containers': {'patternProperties': {'.*': {'$ref': '#/definitions/MachineStatus'}}, ++ 'type': 'object'}, ++ 'dns-name': {'type': 'string'}, ++ 'hardware': {'type': 'string'}, ++ 'has-vote': {'type': 'boolean'}, ++ 'id': {'type': 'string'}, ++ 'instance-id': {'type': 'string'}, ++ 'instance-status': {'$ref': '#/definitions/DetailedStatus'}, ++ 'ip-addresses': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'jobs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'network-interfaces': {'patternProperties': {'.*': {'$ref': '#/definitions/NetworkInterface'}}, ++ 'type': 'object'}, ++ 'series': {'type': 'string'}, ++ 'wants-vote': {'type': 'boolean'}}, ++ 'required': ['agent-status', ++ 'instance-status', ++ 'dns-name', ++ 'instance-id', ++ 'series', ++ 'id', ++ 'containers', ++ 'constraints', ++ 'hardware', ++ 'jobs', ++ 'has-vote', ++ 'wants-vote'], ++ 'type': 'object'}, ++ 'MeterStatus': {'additionalProperties': False, ++ 'properties': {'color': {'type': 'string'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['color', 'message'], ++ 'type': 'object'}, ++ 'ModelConfigResults': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelInfo': {'additionalProperties': False, ++ 'properties': {'agent-version': {'$ref': '#/definitions/Number'}, ++ 'cloud-credential-tag': {'type': 'string'}, ++ 'cloud-region': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'controller-uuid': {'type': 'string'}, ++ 'default-series': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'}, ++ 'type': 'array'}, ++ 'migration': {'$ref': '#/definitions/ModelMigrationStatus'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'provider-type': {'type': 'string'}, ++ 'sla': {'$ref': '#/definitions/ModelSLAInfo'}, ++ 'status': {'$ref': '#/definitions/EntityStatus'}, ++ 'users': {'items': {'$ref': '#/definitions/ModelUserInfo'}, ++ 'type': 'array'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', ++ 'uuid', ++ 'controller-uuid', ++ 'cloud-tag', ++ 'owner-tag', ++ 'life', ++ 'users', ++ 'machines', ++ 'sla', ++ 'agent-version'], ++ 'type': 'object'}, ++ 'ModelMachineInfo': {'additionalProperties': False, ++ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'}, ++ 'has-vote': {'type': 'boolean'}, ++ 'id': {'type': 'string'}, ++ 'instance-id': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'wants-vote': {'type': 'boolean'}}, ++ 'required': ['id'], ++ 'type': 'object'}, ++ 'ModelMigrationStatus': {'additionalProperties': False, ++ 'properties': {'end': {'format': 'date-time', ++ 'type': 'string'}, ++ 'start': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['status', 'start'], ++ 'type': 'object'}, ++ 'ModelSLA': {'additionalProperties': False, ++ 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'}, ++ 'creds': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['ModelSLAInfo', 'creds'], ++ 'type': 'object'}, ++ 'ModelSLAInfo': {'additionalProperties': False, ++ 'properties': {'level': {'type': 'string'}, ++ 'owner': {'type': 'string'}}, ++ 'required': ['level', 'owner'], ++ 'type': 'object'}, ++ 'ModelSet': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelStatusInfo': {'additionalProperties': False, ++ 'properties': {'available-version': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'meter-status': {'$ref': '#/definitions/MeterStatus'}, ++ 'model-status': {'$ref': '#/definitions/DetailedStatus'}, ++ 'name': {'type': 'string'}, ++ 'region': {'type': 'string'}, ++ 'sla': {'type': 'string'}, ++ 'version': {'type': 'string'}}, ++ 'required': ['name', ++ 'cloud-tag', ++ 'version', ++ 'available-version', ++ 'model-status', ++ 'meter-status', ++ 'sla'], ++ 'type': 'object'}, ++ 'ModelUnset': {'additionalProperties': False, ++ 'properties': {'keys': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['keys'], ++ 'type': 'object'}, ++ 'ModelUserInfo': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'display-name': {'type': 'string'}, ++ 'last-connection': {'format': 'date-time', ++ 'type': 'string'}, ++ 'user': {'type': 'string'}}, ++ 'required': ['user', ++ 'display-name', ++ 'last-connection', ++ 'access'], ++ 'type': 'object'}, ++ 'ModelUserInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/ModelUserInfo'}}, ++ 'type': 'object'}, ++ 'ModelUserInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ModelUserInfoResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'NetworkInterface': {'additionalProperties': False, ++ 'properties': {'dns-nameservers': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'gateway': {'type': 'string'}, ++ 'ip-addresses': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'is-up': {'type': 'boolean'}, ++ 'mac-address': {'type': 'string'}, ++ 'space': {'type': 'string'}}, ++ 'required': ['ip-addresses', ++ 'mac-address', ++ 'is-up'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'Placement': {'additionalProperties': False, ++ 'properties': {'directive': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['scope', 'directive'], ++ 'type': 'object'}, ++ 'PrivateAddress': {'additionalProperties': False, ++ 'properties': {'target': {'type': 'string'}}, ++ 'required': ['target'], ++ 'type': 'object'}, ++ 'PrivateAddressResults': {'additionalProperties': False, ++ 'properties': {'private-address': {'type': 'string'}}, ++ 'required': ['private-address'], ++ 'type': 'object'}, ++ 'ProvisioningScriptParams': {'additionalProperties': False, ++ 'properties': {'data-dir': {'type': 'string'}, ++ 'disable-package-commands': {'type': 'boolean'}, ++ 'machine-id': {'type': 'string'}, ++ 'nonce': {'type': 'string'}}, ++ 'required': ['machine-id', ++ 'nonce', ++ 'data-dir', ++ 'disable-package-commands'], ++ 'type': 'object'}, ++ 'ProvisioningScriptResult': {'additionalProperties': False, ++ 'properties': {'script': {'type': 'string'}}, ++ 'required': ['script'], ++ 'type': 'object'}, ++ 'PublicAddress': {'additionalProperties': False, ++ 'properties': {'target': {'type': 'string'}}, ++ 'required': ['target'], ++ 'type': 'object'}, ++ 'PublicAddressResults': {'additionalProperties': False, ++ 'properties': {'public-address': {'type': 'string'}}, ++ 'required': ['public-address'], ++ 'type': 'object'}, ++ 'RelationStatus': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'$ref': '#/definitions/EndpointStatus'}, ++ 'type': 'array'}, ++ 'id': {'type': 'integer'}, ++ 'interface': {'type': 'string'}, ++ 'key': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['id', ++ 'key', ++ 'interface', ++ 'scope', ++ 'endpoints'], ++ 'type': 'object'}, ++ 'RemoteApplicationStatus': {'additionalProperties': False, ++ 'properties': {'application-name': {'type': 'string'}, ++ 'application-url': {'type': 'string'}, ++ 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'}, ++ 'type': 'array'}, ++ 'err': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'life': {'type': 'string'}, ++ 'relations': {'patternProperties': {'.*': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'status': {'$ref': '#/definitions/DetailedStatus'}}, ++ 'required': ['application-url', ++ 'application-name', ++ 'endpoints', ++ 'life', ++ 'relations', ++ 'status'], ++ 'type': 'object'}, ++ 'RemoteEndpoint': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'ResolveCharmResult': {'additionalProperties': False, ++ 'properties': {'error': {'type': 'string'}, ++ 'url': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ResolveCharmResults': {'additionalProperties': False, ++ 'properties': {'urls': {'items': {'$ref': '#/definitions/ResolveCharmResult'}, ++ 'type': 'array'}}, ++ 'required': ['urls'], ++ 'type': 'object'}, ++ 'ResolveCharms': {'additionalProperties': False, ++ 'properties': {'references': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['references'], ++ 'type': 'object'}, ++ 'Resolved': {'additionalProperties': False, ++ 'properties': {'retry': {'type': 'boolean'}, ++ 'unit-name': {'type': 'string'}}, ++ 'required': ['unit-name', 'retry'], ++ 'type': 'object'}, ++ 'SetConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['application', 'constraints'], ++ 'type': 'object'}, ++ 'SetModelAgentVersion': {'additionalProperties': False, ++ 'properties': {'version': {'$ref': '#/definitions/Number'}}, ++ 'required': ['version'], ++ 'type': 'object'}, ++ 'StatusHistoryFilter': {'additionalProperties': False, ++ 'properties': {'date': {'format': 'date-time', ++ 'type': 'string'}, ++ 'delta': {'type': 'integer'}, ++ 'exclude': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'size': {'type': 'integer'}}, ++ 'required': ['size', ++ 'date', ++ 'delta', ++ 'exclude'], ++ 'type': 'object'}, ++ 'StatusHistoryRequest': {'additionalProperties': False, ++ 'properties': {'filter': {'$ref': '#/definitions/StatusHistoryFilter'}, ++ 'historyKind': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['historyKind', ++ 'size', ++ 'filter', ++ 'tag'], ++ 'type': 'object'}, ++ 'StatusHistoryRequests': {'additionalProperties': False, ++ 'properties': {'requests': {'items': {'$ref': '#/definitions/StatusHistoryRequest'}, ++ 'type': 'array'}}, ++ 'required': ['requests'], ++ 'type': 'object'}, ++ 'StatusHistoryResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'history': {'$ref': '#/definitions/History'}}, ++ 'required': ['history'], ++ 'type': 'object'}, ++ 'StatusHistoryResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StatusHistoryResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StatusParams': {'additionalProperties': False, ++ 'properties': {'patterns': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['patterns'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Tools': {'additionalProperties': False, ++ 'properties': {'sha256': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'url': {'type': 'string'}, ++ 'version': {'$ref': '#/definitions/Binary'}}, ++ 'required': ['version', 'url', 'size'], ++ 'type': 'object'}, ++ 'UnitStatus': {'additionalProperties': False, ++ 'properties': {'agent-status': {'$ref': '#/definitions/DetailedStatus'}, ++ 'charm': {'type': 'string'}, ++ 'leader': {'type': 'boolean'}, ++ 'machine': {'type': 'string'}, ++ 'opened-ports': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'public-address': {'type': 'string'}, ++ 'subordinates': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitStatus'}}, ++ 'type': 'object'}, ++ 'workload-status': {'$ref': '#/definitions/DetailedStatus'}, ++ 'workload-version': {'type': 'string'}}, ++ 'required': ['agent-status', ++ 'workload-status', ++ 'workload-version', ++ 'machine', ++ 'opened-ports', ++ 'public-address', ++ 'charm', ++ 'subordinates'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}}, ++ 'type': 'object'}, ++ 'AbortCurrentUpgrade': {'type': 'object'}, ++ 'AddCharm': {'properties': {'Params': {'$ref': '#/definitions/AddCharm'}}, ++ 'type': 'object'}, ++ 'AddCharmWithAuthorization': {'properties': {'Params': {'$ref': '#/definitions/AddCharmWithAuthorization'}}, ++ 'type': 'object'}, ++ 'AddMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'}, ++ 'Result': {'$ref': '#/definitions/AddMachinesResults'}}, ++ 'type': 'object'}, ++ 'AddMachinesV2': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'}, ++ 'Result': {'$ref': '#/definitions/AddMachinesResults'}}, ++ 'type': 'object'}, ++ 'AgentVersion': {'properties': {'Result': {'$ref': '#/definitions/AgentVersionResult'}}, ++ 'type': 'object'}, ++ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}}, ++ 'type': 'object'}, ++ 'DestroyMachines': {'properties': {'Params': {'$ref': '#/definitions/DestroyMachines'}}, ++ 'type': 'object'}, ++ 'FindTools': {'properties': {'Params': {'$ref': '#/definitions/FindToolsParams'}, ++ 'Result': {'$ref': '#/definitions/FindToolsResult'}}, ++ 'type': 'object'}, ++ 'FullStatus': {'properties': {'Params': {'$ref': '#/definitions/StatusParams'}, ++ 'Result': {'$ref': '#/definitions/FullStatus'}}, ++ 'type': 'object'}, ++ 'GetBundleChanges': {'properties': {'Params': {'$ref': '#/definitions/BundleChangesParams'}, ++ 'Result': {'$ref': '#/definitions/BundleChangesResults'}}, ++ 'type': 'object'}, ++ 'GetModelConstraints': {'properties': {'Result': {'$ref': '#/definitions/GetConstraintsResults'}}, ++ 'type': 'object'}, ++ 'InjectMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'}, ++ 'Result': {'$ref': '#/definitions/AddMachinesResults'}}, ++ 'type': 'object'}, ++ 'ModelGet': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}}, ++ 'type': 'object'}, ++ 'ModelInfo': {'properties': {'Result': {'$ref': '#/definitions/ModelInfo'}}, ++ 'type': 'object'}, ++ 'ModelSet': {'properties': {'Params': {'$ref': '#/definitions/ModelSet'}}, ++ 'type': 'object'}, ++ 'ModelUnset': {'properties': {'Params': {'$ref': '#/definitions/ModelUnset'}}, ++ 'type': 'object'}, ++ 'ModelUserInfo': {'properties': {'Result': {'$ref': '#/definitions/ModelUserInfoResults'}}, ++ 'type': 'object'}, ++ 'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/PrivateAddress'}, ++ 'Result': {'$ref': '#/definitions/PrivateAddressResults'}}, ++ 'type': 'object'}, ++ 'ProvisioningScript': {'properties': {'Params': {'$ref': '#/definitions/ProvisioningScriptParams'}, ++ 'Result': {'$ref': '#/definitions/ProvisioningScriptResult'}}, ++ 'type': 'object'}, ++ 'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/PublicAddress'}, ++ 'Result': {'$ref': '#/definitions/PublicAddressResults'}}, ++ 'type': 'object'}, ++ 'ResolveCharms': {'properties': {'Params': {'$ref': '#/definitions/ResolveCharms'}, ++ 'Result': {'$ref': '#/definitions/ResolveCharmResults'}}, ++ 'type': 'object'}, ++ 'Resolved': {'properties': {'Params': {'$ref': '#/definitions/Resolved'}}, ++ 'type': 'object'}, ++ 'RetryProvisioning': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'SetModelAgentVersion': {'properties': {'Params': {'$ref': '#/definitions/SetModelAgentVersion'}}, ++ 'type': 'object'}, ++ 'SetModelConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}}, ++ 'type': 'object'}, ++ 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}}, ++ 'type': 'object'}, ++ 'StatusHistory': {'properties': {'Params': {'$ref': '#/definitions/StatusHistoryRequests'}, ++ 'Result': {'$ref': '#/definitions/StatusHistoryResults'}}, ++ 'type': 'object'}, ++ 'WatchAll': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherId'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(APIHostPortsResult) ++ async def APIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='APIHostPorts', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def AbortCurrentUpgrade(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='AbortCurrentUpgrade', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def AddCharm(self, channel, url): ++ ''' ++ channel : str ++ url : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='AddCharm', version=1, params=_params) ++ _params['channel'] = channel ++ _params['url'] = url ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def AddCharmWithAuthorization(self, channel, macaroon, url): ++ ''' ++ channel : str ++ macaroon : Macaroon ++ url : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='AddCharmWithAuthorization', version=1, params=_params) ++ _params['channel'] = channel ++ _params['macaroon'] = macaroon ++ _params['url'] = url ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AddMachinesResults) ++ async def AddMachines(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams> ++ Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='AddMachines', version=1, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AddMachinesResults) ++ async def AddMachinesV2(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams> ++ Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='AddMachinesV2', version=1, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AgentVersionResult) ++ async def AgentVersion(self): ++ ''' ++ ++ Returns -> Number ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='AgentVersion', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BytesResult) ++ async def CACert(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='CACert', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyMachines(self, force, machine_names): ++ ''' ++ force : bool ++ machine_names : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='DestroyMachines', version=1, params=_params) ++ _params['force'] = force ++ _params['machine-names'] = machine_names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FindToolsResult) ++ async def FindTools(self, arch, major, minor, number, series): ++ ''' ++ arch : str ++ major : int ++ minor : int ++ number : Number ++ series : str ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[~Tools]<~Tools>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='FindTools', version=1, params=_params) ++ _params['arch'] = arch ++ _params['major'] = major ++ _params['minor'] = minor ++ _params['number'] = number ++ _params['series'] = series ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FullStatus) ++ async def FullStatus(self, patterns): ++ ''' ++ patterns : typing.Sequence<+T_co>[str] ++ Returns -> typing.Union[_ForwardRef('ModelStatusInfo'), typing.Sequence<+T_co>[~RelationStatus]<~RelationStatus>, typing.Mapping<~KT, +VT_co>[str, ~RemoteApplicationStatus]<~RemoteApplicationStatus>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='FullStatus', version=1, params=_params) ++ _params['patterns'] = patterns ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BundleChangesResults) ++ async def GetBundleChanges(self, yaml): ++ ''' ++ yaml : str ++ Returns -> typing.Sequence<+T_co>[~BundleChange]<~BundleChange> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='GetBundleChanges', version=1, params=_params) ++ _params['yaml'] = yaml ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(GetConstraintsResults) ++ async def GetModelConstraints(self): ++ ''' ++ ++ Returns -> Value ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='GetModelConstraints', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AddMachinesResults) ++ async def InjectMachines(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams> ++ Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='InjectMachines', version=1, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResults) ++ async def ModelGet(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='ModelGet', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelInfo) ++ async def ModelInfo(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='ModelInfo', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def ModelSet(self, config): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='ModelSet', version=1, params=_params) ++ _params['config'] = config ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def ModelUnset(self, keys): ++ ''' ++ keys : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='ModelUnset', version=1, params=_params) ++ _params['keys'] = keys ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelUserInfoResults) ++ async def ModelUserInfo(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~ModelUserInfoResult]<~ModelUserInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='ModelUserInfo', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(PrivateAddressResults) ++ async def PrivateAddress(self, target): ++ ''' ++ target : str ++ Returns -> str ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='PrivateAddress', version=1, params=_params) ++ _params['target'] = target ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ProvisioningScriptResult) ++ async def ProvisioningScript(self, data_dir, disable_package_commands, machine_id, nonce): ++ ''' ++ data_dir : str ++ disable_package_commands : bool ++ machine_id : str ++ nonce : str ++ Returns -> str ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='ProvisioningScript', version=1, params=_params) ++ _params['data-dir'] = data_dir ++ _params['disable-package-commands'] = disable_package_commands ++ _params['machine-id'] = machine_id ++ _params['nonce'] = nonce ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(PublicAddressResults) ++ async def PublicAddress(self, target): ++ ''' ++ target : str ++ Returns -> str ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='PublicAddress', version=1, params=_params) ++ _params['target'] = target ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ResolveCharmResults) ++ async def ResolveCharms(self, references): ++ ''' ++ references : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~ResolveCharmResult]<~ResolveCharmResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='ResolveCharms', version=1, params=_params) ++ _params['references'] = references ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Resolved(self, retry, unit_name): ++ ''' ++ retry : bool ++ unit_name : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='Resolved', version=1, params=_params) ++ _params['retry'] = retry ++ _params['unit-name'] = unit_name ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RetryProvisioning(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='RetryProvisioning', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def SLALevel(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='SLALevel', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetModelAgentVersion(self, version): ++ ''' ++ version : Number ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='SetModelAgentVersion', version=1, params=_params) ++ _params['version'] = version ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetModelConstraints(self, application, constraints): ++ ''' ++ application : str ++ constraints : Value ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='SetModelConstraints', version=1, params=_params) ++ _params['application'] = application ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetSLALevel(self, creds, level): ++ ''' ++ creds : typing.Sequence<+T_co>[int] ++ level : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='SetSLALevel', version=1, params=_params) ++ _params['creds'] = creds ++ _params['level'] = level ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusHistoryResults) ++ async def StatusHistory(self, requests): ++ ''' ++ requests : typing.Sequence<+T_co>[~StatusHistoryRequest]<~StatusHistoryRequest> ++ Returns -> typing.Sequence<+T_co>[~StatusHistoryResult]<~StatusHistoryResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='StatusHistory', version=1, params=_params) ++ _params['requests'] = requests ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AllWatcherId) ++ async def WatchAll(self): ++ ''' ++ ++ Returns -> str ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Client', request='WatchAll', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class CloudFacade(Type): ++ name = 'Cloud' ++ version = 1 ++ schema = {'definitions': {'Cloud': {'additionalProperties': False, ++ 'properties': {'auth-types': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'endpoint': {'type': 'string'}, ++ 'identity-endpoint': {'type': 'string'}, ++ 'regions': {'items': {'$ref': '#/definitions/CloudRegion'}, ++ 'type': 'array'}, ++ 'storage-endpoint': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['type'], ++ 'type': 'object'}, ++ 'CloudCredential': {'additionalProperties': False, ++ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'auth-type': {'type': 'string'}, ++ 'redacted': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['auth-type'], ++ 'type': 'object'}, ++ 'CloudCredentialResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/CloudCredential'}}, ++ 'type': 'object'}, ++ 'CloudCredentialResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudCredentialResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'CloudInstanceTypesConstraint': {'additionalProperties': False, ++ 'properties': {'cloud-tag': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'region': {'type': 'string'}}, ++ 'required': ['cloud-tag', ++ 'region'], ++ 'type': 'object'}, ++ 'CloudInstanceTypesConstraints': {'additionalProperties': False, ++ 'properties': {'constraints': {'items': {'$ref': '#/definitions/CloudInstanceTypesConstraint'}, ++ 'type': 'array'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'CloudRegion': {'additionalProperties': False, ++ 'properties': {'endpoint': {'type': 'string'}, ++ 'identity-endpoint': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'storage-endpoint': {'type': 'string'}}, ++ 'required': ['name'], ++ 'type': 'object'}, ++ 'CloudResult': {'additionalProperties': False, ++ 'properties': {'cloud': {'$ref': '#/definitions/Cloud'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'CloudResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'CloudsResult': {'additionalProperties': False, ++ 'properties': {'clouds': {'patternProperties': {'.*': {'$ref': '#/definitions/Cloud'}}, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'InstanceType': {'additionalProperties': False, ++ 'properties': {'arches': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'cost': {'type': 'integer'}, ++ 'cpu-cores': {'type': 'integer'}, ++ 'deprecated': {'type': 'boolean'}, ++ 'memory': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'root-disk': {'type': 'integer'}, ++ 'virt-type': {'type': 'string'}}, ++ 'required': ['arches', 'cpu-cores', 'memory'], ++ 'type': 'object'}, ++ 'InstanceTypesResult': {'additionalProperties': False, ++ 'properties': {'cost-currency': {'type': 'string'}, ++ 'cost-divisor': {'type': 'integer'}, ++ 'cost-unit': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'instance-types': {'items': {'$ref': '#/definitions/InstanceType'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'InstanceTypesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/InstanceTypesResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'UpdateCloudCredential': {'additionalProperties': False, ++ 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'credential'], ++ 'type': 'object'}, ++ 'UpdateCloudCredentials': {'additionalProperties': False, ++ 'properties': {'credentials': {'items': {'$ref': '#/definitions/UpdateCloudCredential'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'UserCloud': {'additionalProperties': False, ++ 'properties': {'cloud-tag': {'type': 'string'}, ++ 'user-tag': {'type': 'string'}}, ++ 'required': ['user-tag', 'cloud-tag'], ++ 'type': 'object'}, ++ 'UserClouds': {'additionalProperties': False, ++ 'properties': {'user-clouds': {'items': {'$ref': '#/definitions/UserCloud'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'Cloud': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/CloudResults'}}, ++ 'type': 'object'}, ++ 'Clouds': {'properties': {'Result': {'$ref': '#/definitions/CloudsResult'}}, ++ 'type': 'object'}, ++ 'Credential': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/CloudCredentialResults'}}, ++ 'type': 'object'}, ++ 'DefaultCloud': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/CloudInstanceTypesConstraints'}, ++ 'Result': {'$ref': '#/definitions/InstanceTypesResults'}}, ++ 'type': 'object'}, ++ 'RevokeCredentials': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UpdateCredentials': {'properties': {'Params': {'$ref': '#/definitions/UpdateCloudCredentials'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UserCredentials': {'properties': {'Params': {'$ref': '#/definitions/UserClouds'}, ++ 'Result': {'$ref': '#/definitions/StringsResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(CloudResults) ++ async def Cloud(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~CloudResult]<~CloudResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='Cloud', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CloudsResult) ++ async def Clouds(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~Cloud]<~Cloud> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='Clouds', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CloudCredentialResults) ++ async def Credential(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~CloudCredentialResult]<~CloudCredentialResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='Credential', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def DefaultCloud(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='DefaultCloud', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(InstanceTypesResults) ++ async def InstanceTypes(self, constraints): ++ ''' ++ constraints : typing.Sequence<+T_co>[~CloudInstanceTypesConstraint]<~CloudInstanceTypesConstraint> ++ Returns -> typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='InstanceTypes', version=1, params=_params) ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RevokeCredentials(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='RevokeCredentials', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateCredentials(self, credentials): ++ ''' ++ credentials : typing.Sequence<+T_co>[~UpdateCloudCredential]<~UpdateCloudCredential> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='UpdateCredentials', version=1, params=_params) ++ _params['credentials'] = credentials ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsResults) ++ async def UserCredentials(self, user_clouds): ++ ''' ++ user_clouds : typing.Sequence<+T_co>[~UserCloud]<~UserCloud> ++ Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cloud', request='UserCredentials', version=1, params=_params) ++ _params['user-clouds'] = user_clouds ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class DeployerFacade(Type): ++ name = 'Deployer' ++ version = 1 ++ schema = {'definitions': {'APIHostPortsResult': {'additionalProperties': False, ++ 'properties': {'servers': {'items': {'items': {'$ref': '#/definitions/HostPort'}, ++ 'type': 'array'}, ++ 'type': 'array'}}, ++ 'required': ['servers'], ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'BytesResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'DeployerConnectionValues': {'additionalProperties': False, ++ 'properties': {'api-addresses': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'state-addresses': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['state-addresses', ++ 'api-addresses'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityPassword': {'additionalProperties': False, ++ 'properties': {'password': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'password'], ++ 'type': 'object'}, ++ 'EntityPasswords': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/EntityPassword'}, ++ 'type': 'array'}}, ++ 'required': ['changes'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'HostPort': {'additionalProperties': False, ++ 'properties': {'Address': {'$ref': '#/definitions/Address'}, ++ 'port': {'type': 'integer'}}, ++ 'required': ['Address', 'port'], ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'StringsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}}, ++ 'type': 'object'}, ++ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}}, ++ 'type': 'object'}, ++ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}}, ++ 'type': 'object'}, ++ 'ConnectionInfo': {'properties': {'Result': {'$ref': '#/definitions/DeployerConnectionValues'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'StateAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}}, ++ 'type': 'object'}, ++ 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringsResult) ++ async def APIAddresses(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='APIAddresses', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(APIHostPortsResult) ++ async def APIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='APIHostPorts', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BytesResult) ++ async def CACert(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='CACert', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DeployerConnectionValues) ++ async def ConnectionInfo(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='ConnectionInfo', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='Life', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def ModelUUID(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='ModelUUID', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Remove(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='Remove', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetPasswords(self, changes): ++ ''' ++ changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='SetPasswords', version=1, params=_params) ++ _params['changes'] = changes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='SetStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsResult) ++ async def StateAddresses(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='StateAddresses', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='UpdateStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchAPIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='WatchAPIHostPorts', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchUnits(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Deployer', request='WatchUnits', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class HostKeyReporterFacade(Type): ++ name = 'HostKeyReporter' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'SSHHostKeySet': {'additionalProperties': False, ++ 'properties': {'entity-keys': {'items': {'$ref': '#/definitions/SSHHostKeys'}, ++ 'type': 'array'}}, ++ 'required': ['entity-keys'], ++ 'type': 'object'}, ++ 'SSHHostKeys': {'additionalProperties': False, ++ 'properties': {'public-keys': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'public-keys'], ++ 'type': 'object'}}, ++ 'properties': {'ReportKeys': {'properties': {'Params': {'$ref': '#/definitions/SSHHostKeySet'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ReportKeys(self, entity_keys): ++ ''' ++ entity_keys : typing.Sequence<+T_co>[~SSHHostKeys]<~SSHHostKeys> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='HostKeyReporter', request='ReportKeys', version=1, params=_params) ++ _params['entity-keys'] = entity_keys ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class KeyManagerFacade(Type): ++ name = 'KeyManager' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ListSSHKeys': {'additionalProperties': False, ++ 'properties': {'entities': {'$ref': '#/definitions/Entities'}, ++ 'mode': {'type': 'boolean'}}, ++ 'required': ['entities', 'mode'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModifyUserSSHKeys': {'additionalProperties': False, ++ 'properties': {'ssh-keys': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'user': {'type': 'string'}}, ++ 'required': ['user', 'ssh-keys'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'AddKeys': {'properties': {'Params': {'$ref': '#/definitions/ModifyUserSSHKeys'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'DeleteKeys': {'properties': {'Params': {'$ref': '#/definitions/ModifyUserSSHKeys'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ImportKeys': {'properties': {'Params': {'$ref': '#/definitions/ModifyUserSSHKeys'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ListKeys': {'properties': {'Params': {'$ref': '#/definitions/ListSSHKeys'}, ++ 'Result': {'$ref': '#/definitions/StringsResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddKeys(self, ssh_keys, user): ++ ''' ++ ssh_keys : typing.Sequence<+T_co>[str] ++ user : str ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='KeyManager', request='AddKeys', version=1, params=_params) ++ _params['ssh-keys'] = ssh_keys ++ _params['user'] = user ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DeleteKeys(self, ssh_keys, user): ++ ''' ++ ssh_keys : typing.Sequence<+T_co>[str] ++ user : str ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='KeyManager', request='DeleteKeys', version=1, params=_params) ++ _params['ssh-keys'] = ssh_keys ++ _params['user'] = user ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ImportKeys(self, ssh_keys, user): ++ ''' ++ ssh_keys : typing.Sequence<+T_co>[str] ++ user : str ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='KeyManager', request='ImportKeys', version=1, params=_params) ++ _params['ssh-keys'] = ssh_keys ++ _params['user'] = user ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsResults) ++ async def ListKeys(self, entities, mode): ++ ''' ++ entities : Entities ++ mode : bool ++ Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='KeyManager', request='ListKeys', version=1, params=_params) ++ _params['entities'] = entities ++ _params['mode'] = mode ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class KeyUpdaterFacade(Type): ++ name = 'KeyUpdater' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'AuthorisedKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsResults'}}, ++ 'type': 'object'}, ++ 'WatchAuthorisedKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringsResults) ++ async def AuthorisedKeys(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='KeyUpdater', request='AuthorisedKeys', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchAuthorisedKeys(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='KeyUpdater', request='WatchAuthorisedKeys', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class LifeFlagFacade(Type): ++ name = 'LifeFlag' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='LifeFlag', request='Life', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def Watch(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='LifeFlag', request='Watch', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class LogForwardingFacade(Type): ++ name = 'LogForwarding' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'LogForwardingGetLastSentParams': {'additionalProperties': False, ++ 'properties': {'ids': {'items': {'$ref': '#/definitions/LogForwardingID'}, ++ 'type': 'array'}}, ++ 'required': ['ids'], ++ 'type': 'object'}, ++ 'LogForwardingGetLastSentResult': {'additionalProperties': False, ++ 'properties': {'err': {'$ref': '#/definitions/Error'}, ++ 'record-id': {'type': 'integer'}, ++ 'record-timestamp': {'type': 'integer'}}, ++ 'required': ['record-id', ++ 'record-timestamp', ++ 'err'], ++ 'type': 'object'}, ++ 'LogForwardingGetLastSentResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LogForwardingGetLastSentResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'LogForwardingID': {'additionalProperties': False, ++ 'properties': {'model': {'type': 'string'}, ++ 'sink': {'type': 'string'}}, ++ 'required': ['model', 'sink'], ++ 'type': 'object'}, ++ 'LogForwardingSetLastSentParam': {'additionalProperties': False, ++ 'properties': {'LogForwardingID': {'$ref': '#/definitions/LogForwardingID'}, ++ 'record-id': {'type': 'integer'}, ++ 'record-timestamp': {'type': 'integer'}}, ++ 'required': ['LogForwardingID', ++ 'record-id', ++ 'record-timestamp'], ++ 'type': 'object'}, ++ 'LogForwardingSetLastSentParams': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/LogForwardingSetLastSentParam'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'GetLastSent': {'properties': {'Params': {'$ref': '#/definitions/LogForwardingGetLastSentParams'}, ++ 'Result': {'$ref': '#/definitions/LogForwardingGetLastSentResults'}}, ++ 'type': 'object'}, ++ 'SetLastSent': {'properties': {'Params': {'$ref': '#/definitions/LogForwardingSetLastSentParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(LogForwardingGetLastSentResults) ++ async def GetLastSent(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~LogForwardingID]<~LogForwardingID> ++ Returns -> typing.Sequence<+T_co>[~LogForwardingGetLastSentResult]<~LogForwardingGetLastSentResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='LogForwarding', request='GetLastSent', version=1, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetLastSent(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~LogForwardingSetLastSentParam]<~LogForwardingSetLastSentParam> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='LogForwarding', request='SetLastSent', version=1, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class LoggerFacade(Type): ++ name = 'Logger' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'LoggingConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'WatchLoggingConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringResults) ++ async def LoggingConfig(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Logger', request='LoggingConfig', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchLoggingConfig(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Logger', request='WatchLoggingConfig', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MachineActionsFacade(Type): ++ name = 'MachineActions' ++ version = 1 ++ schema = {'definitions': {'Action': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'parameters': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'receiver': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'receiver', 'name'], ++ 'type': 'object'}, ++ 'ActionExecutionResult': {'additionalProperties': False, ++ 'properties': {'action-tag': {'type': 'string'}, ++ 'message': {'type': 'string'}, ++ 'results': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['action-tag', 'status'], ++ 'type': 'object'}, ++ 'ActionExecutionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionExecutionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ActionResult': {'additionalProperties': False, ++ 'properties': {'action': {'$ref': '#/definitions/Action'}, ++ 'completed': {'format': 'date-time', ++ 'type': 'string'}, ++ 'enqueued': {'format': 'date-time', ++ 'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'message': {'type': 'string'}, ++ 'output': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'started': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ActionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ActionsByReceiver': {'additionalProperties': False, ++ 'properties': {'actions': {'items': {'$ref': '#/definitions/ActionResult'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'receiver': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ActionsByReceivers': {'additionalProperties': False, ++ 'properties': {'actions': {'items': {'$ref': '#/definitions/ActionsByReceiver'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'StringsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}, ++ 'BeginActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'FinishActions': {'properties': {'Params': {'$ref': '#/definitions/ActionExecutionResults'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'RunningActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionsByReceivers'}}, ++ 'type': 'object'}, ++ 'WatchActionNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ActionResults) ++ async def Actions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineActions', request='Actions', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def BeginActions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineActions', request='BeginActions', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def FinishActions(self, results): ++ ''' ++ results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineActions', request='FinishActions', version=1, params=_params) ++ _params['results'] = results ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionsByReceivers) ++ async def RunningActions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineActions', request='RunningActions', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchActionNotifications(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineActions', request='WatchActionNotifications', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MachineUndertakerFacade(Type): ++ name = 'MachineUndertaker' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'EntitiesResult': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'EntitiesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/EntitiesResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ProviderInterfaceInfo': {'additionalProperties': False, ++ 'properties': {'interface-name': {'type': 'string'}, ++ 'mac-address': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}}, ++ 'required': ['interface-name', ++ 'mac-address', ++ 'provider-id'], ++ 'type': 'object'}, ++ 'ProviderInterfaceInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'interfaces': {'items': {'$ref': '#/definitions/ProviderInterfaceInfo'}, ++ 'type': 'array'}, ++ 'machine-tag': {'type': 'string'}}, ++ 'required': ['machine-tag', ++ 'interfaces'], ++ 'type': 'object'}, ++ 'ProviderInterfaceInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ProviderInterfaceInfoResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'AllMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/EntitiesResults'}}, ++ 'type': 'object'}, ++ 'CompleteMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'}}, ++ 'type': 'object'}, ++ 'GetMachineProviderInterfaceInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ProviderInterfaceInfoResults'}}, ++ 'type': 'object'}, ++ 'WatchMachineRemovals': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(EntitiesResults) ++ async def AllMachineRemovals(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~EntitiesResult]<~EntitiesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineUndertaker', request='AllMachineRemovals', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def CompleteMachineRemovals(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineUndertaker', request='CompleteMachineRemovals', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ProviderInterfaceInfoResults) ++ async def GetMachineProviderInterfaceInfo(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ProviderInterfaceInfoResult]<~ProviderInterfaceInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineUndertaker', request='GetMachineProviderInterfaceInfo', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchMachineRemovals(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineUndertaker', request='WatchMachineRemovals', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MachinerFacade(Type): ++ name = 'Machiner' ++ version = 1 ++ schema = {'definitions': {'APIHostPortsResult': {'additionalProperties': False, ++ 'properties': {'servers': {'items': {'items': {'$ref': '#/definitions/HostPort'}, ++ 'type': 'array'}, ++ 'type': 'array'}}, ++ 'required': ['servers'], ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'BytesResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'HostPort': {'additionalProperties': False, ++ 'properties': {'Address': {'$ref': '#/definitions/Address'}, ++ 'port': {'type': 'integer'}}, ++ 'required': ['Address', 'port'], ++ 'type': 'object'}, ++ 'JobsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'jobs': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['jobs'], ++ 'type': 'object'}, ++ 'JobsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/JobsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineAddresses': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'}, ++ 'type': 'array'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'addresses'], ++ 'type': 'object'}, ++ 'NetworkConfig': {'additionalProperties': False, ++ 'properties': {'address': {'type': 'string'}, ++ 'cidr': {'type': 'string'}, ++ 'config-type': {'type': 'string'}, ++ 'device-index': {'type': 'integer'}, ++ 'disabled': {'type': 'boolean'}, ++ 'dns-search-domains': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'dns-servers': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'gateway-address': {'type': 'string'}, ++ 'interface-name': {'type': 'string'}, ++ 'interface-type': {'type': 'string'}, ++ 'mac-address': {'type': 'string'}, ++ 'mtu': {'type': 'integer'}, ++ 'no-auto-start': {'type': 'boolean'}, ++ 'parent-interface-name': {'type': 'string'}, ++ 'provider-address-id': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'provider-subnet-id': {'type': 'string'}, ++ 'provider-vlan-id': {'type': 'string'}, ++ 'routes': {'items': {'$ref': '#/definitions/NetworkRoute'}, ++ 'type': 'array'}, ++ 'vlan-tag': {'type': 'integer'}}, ++ 'required': ['device-index', ++ 'mac-address', ++ 'cidr', ++ 'mtu', ++ 'provider-id', ++ 'provider-subnet-id', ++ 'provider-space-id', ++ 'provider-address-id', ++ 'provider-vlan-id', ++ 'vlan-tag', ++ 'interface-name', ++ 'parent-interface-name', ++ 'interface-type', ++ 'disabled'], ++ 'type': 'object'}, ++ 'NetworkRoute': {'additionalProperties': False, ++ 'properties': {'destination-cidr': {'type': 'string'}, ++ 'gateway-ip': {'type': 'string'}, ++ 'metric': {'type': 'integer'}}, ++ 'required': ['destination-cidr', ++ 'gateway-ip', ++ 'metric'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SetMachineNetworkConfig': {'additionalProperties': False, ++ 'properties': {'config': {'items': {'$ref': '#/definitions/NetworkConfig'}, ++ 'type': 'array'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'config'], ++ 'type': 'object'}, ++ 'SetMachinesAddresses': {'additionalProperties': False, ++ 'properties': {'machine-addresses': {'items': {'$ref': '#/definitions/MachineAddresses'}, ++ 'type': 'array'}}, ++ 'required': ['machine-addresses'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}}, ++ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}}, ++ 'type': 'object'}, ++ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}}, ++ 'type': 'object'}, ++ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}}, ++ 'type': 'object'}, ++ 'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Jobs': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/JobsResults'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'SetMachineAddresses': {'properties': {'Params': {'$ref': '#/definitions/SetMachinesAddresses'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetObservedNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/SetMachineNetworkConfig'}}, ++ 'type': 'object'}, ++ 'SetProviderNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringsResult) ++ async def APIAddresses(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='APIAddresses', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(APIHostPortsResult) ++ async def APIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='APIHostPorts', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BytesResult) ++ async def CACert(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='CACert', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnsureDead(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='EnsureDead', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(JobsResults) ++ async def Jobs(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~JobsResult]<~JobsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='Jobs', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='Life', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def ModelUUID(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='ModelUUID', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetMachineAddresses(self, machine_addresses): ++ ''' ++ machine_addresses : typing.Sequence<+T_co>[~MachineAddresses]<~MachineAddresses> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='SetMachineAddresses', version=1, params=_params) ++ _params['machine-addresses'] = machine_addresses ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetObservedNetworkConfig(self, config, tag): ++ ''' ++ config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig> ++ tag : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='SetObservedNetworkConfig', version=1, params=_params) ++ _params['config'] = config ++ _params['tag'] = tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetProviderNetworkConfig(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='SetProviderNetworkConfig', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='SetStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='UpdateStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def Watch(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='Watch', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchAPIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Machiner', request='WatchAPIHostPorts', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MeterStatusFacade(Type): ++ name = 'MeterStatus' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MeterStatusResult': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'type': 'string'}}, ++ 'required': ['code', 'info'], ++ 'type': 'object'}, ++ 'MeterStatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MeterStatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'GetMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MeterStatusResults'}}, ++ 'type': 'object'}, ++ 'WatchMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(MeterStatusResults) ++ async def GetMeterStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MeterStatus', request='GetMeterStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchMeterStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MeterStatus', request='WatchMeterStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MetricsManagerFacade(Type): ++ name = 'MetricsManager' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'AddJujuMachineMetrics': {'type': 'object'}, ++ 'CleanupOldMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SendMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def AddJujuMachineMetrics(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MetricsManager', request='AddJujuMachineMetrics', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def CleanupOldMetrics(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MetricsManager', request='CleanupOldMetrics', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SendMetrics(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MetricsManager', request='SendMetrics', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MigrationFlagFacade(Type): ++ name = 'MigrationFlag' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'PhaseResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'phase': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'PhaseResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/PhaseResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'Phase': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/PhaseResults'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(PhaseResults) ++ async def Phase(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~PhaseResult]<~PhaseResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationFlag', request='Phase', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def Watch(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationFlag', request='Watch', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MigrationMasterFacade(Type): ++ name = 'MigrationMaster' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MasterMigrationStatus': {'additionalProperties': False, ++ 'properties': {'migration-id': {'type': 'string'}, ++ 'phase': {'type': 'string'}, ++ 'phase-changed-time': {'format': 'date-time', ++ 'type': 'string'}, ++ 'spec': {'$ref': '#/definitions/MigrationSpec'}}, ++ 'required': ['spec', ++ 'migration-id', ++ 'phase', ++ 'phase-changed-time'], ++ 'type': 'object'}, ++ 'MigrationModelInfo': {'additionalProperties': False, ++ 'properties': {'agent-version': {'$ref': '#/definitions/Number'}, ++ 'controller-agent-version': {'$ref': '#/definitions/Number'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['uuid', ++ 'name', ++ 'owner-tag', ++ 'agent-version', ++ 'controller-agent-version'], ++ 'type': 'object'}, ++ 'MigrationSpec': {'additionalProperties': False, ++ 'properties': {'model-tag': {'type': 'string'}, ++ 'target-info': {'$ref': '#/definitions/MigrationTargetInfo'}}, ++ 'required': ['model-tag', 'target-info'], ++ 'type': 'object'}, ++ 'MigrationTargetInfo': {'additionalProperties': False, ++ 'properties': {'addrs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'auth-tag': {'type': 'string'}, ++ 'ca-cert': {'type': 'string'}, ++ 'controller-tag': {'type': 'string'}, ++ 'macaroons': {'type': 'string'}, ++ 'password': {'type': 'string'}}, ++ 'required': ['controller-tag', ++ 'addrs', ++ 'ca-cert', ++ 'auth-tag'], ++ 'type': 'object'}, ++ 'MinionReports': {'additionalProperties': False, ++ 'properties': {'failed': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'migration-id': {'type': 'string'}, ++ 'phase': {'type': 'string'}, ++ 'success-count': {'type': 'integer'}, ++ 'unknown-count': {'type': 'integer'}, ++ 'unknown-sample': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['migration-id', ++ 'phase', ++ 'success-count', ++ 'unknown-count', ++ 'unknown-sample', ++ 'failed'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'SerializedModel': {'additionalProperties': False, ++ 'properties': {'bytes': {'items': {'type': 'integer'}, ++ 'type': 'array'}, ++ 'charms': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'resources': {'items': {'$ref': '#/definitions/SerializedModelResource'}, ++ 'type': 'array'}, ++ 'tools': {'items': {'$ref': '#/definitions/SerializedModelTools'}, ++ 'type': 'array'}}, ++ 'required': ['bytes', ++ 'charms', ++ 'tools', ++ 'resources'], ++ 'type': 'object'}, ++ 'SerializedModelResource': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'application-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'}, ++ 'charmstore-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'}, ++ 'name': {'type': 'string'}, ++ 'unit-revisions': {'patternProperties': {'.*': {'$ref': '#/definitions/SerializedModelResourceRevision'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'name', ++ 'application-revision', ++ 'charmstore-revision', ++ 'unit-revisions'], ++ 'type': 'object'}, ++ 'SerializedModelResourceRevision': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'fingerprint': {'type': 'string'}, ++ 'origin': {'type': 'string'}, ++ 'path': {'type': 'string'}, ++ 'revision': {'type': 'integer'}, ++ 'size': {'type': 'integer'}, ++ 'timestamp': {'format': 'date-time', ++ 'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'username': {'type': 'string'}}, ++ 'required': ['revision', ++ 'type', ++ 'path', ++ 'description', ++ 'origin', ++ 'fingerprint', ++ 'size', ++ 'timestamp'], ++ 'type': 'object'}, ++ 'SerializedModelTools': {'additionalProperties': False, ++ 'properties': {'uri': {'type': 'string'}, ++ 'version': {'type': 'string'}}, ++ 'required': ['version', 'uri'], ++ 'type': 'object'}, ++ 'SetMigrationPhaseArgs': {'additionalProperties': False, ++ 'properties': {'phase': {'type': 'string'}}, ++ 'required': ['phase'], ++ 'type': 'object'}, ++ 'SetMigrationStatusMessageArgs': {'additionalProperties': False, ++ 'properties': {'message': {'type': 'string'}}, ++ 'required': ['message'], ++ 'type': 'object'}}, ++ 'properties': {'Export': {'properties': {'Result': {'$ref': '#/definitions/SerializedModel'}}, ++ 'type': 'object'}, ++ 'MigrationStatus': {'properties': {'Result': {'$ref': '#/definitions/MasterMigrationStatus'}}, ++ 'type': 'object'}, ++ 'MinionReports': {'properties': {'Result': {'$ref': '#/definitions/MinionReports'}}, ++ 'type': 'object'}, ++ 'ModelInfo': {'properties': {'Result': {'$ref': '#/definitions/MigrationModelInfo'}}, ++ 'type': 'object'}, ++ 'Prechecks': {'type': 'object'}, ++ 'Reap': {'type': 'object'}, ++ 'SetPhase': {'properties': {'Params': {'$ref': '#/definitions/SetMigrationPhaseArgs'}}, ++ 'type': 'object'}, ++ 'SetStatusMessage': {'properties': {'Params': {'$ref': '#/definitions/SetMigrationStatusMessageArgs'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchMinionReports': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(SerializedModel) ++ async def Export(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~SerializedModelTools]<~SerializedModelTools> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='Export', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MasterMigrationStatus) ++ async def MigrationStatus(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('MigrationSpec')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='MigrationStatus', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MinionReports) ++ async def MinionReports(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='MinionReports', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MigrationModelInfo) ++ async def ModelInfo(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Number'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='ModelInfo', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Prechecks(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='Prechecks', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Reap(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='Reap', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetPhase(self, phase): ++ ''' ++ phase : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='SetPhase', version=1, params=_params) ++ _params['phase'] = phase ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetStatusMessage(self, message): ++ ''' ++ message : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='SetStatusMessage', version=1, params=_params) ++ _params['message'] = message ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def Watch(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='Watch', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchMinionReports(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMaster', request='WatchMinionReports', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MigrationMinionFacade(Type): ++ name = 'MigrationMinion' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MinionReport': {'additionalProperties': False, ++ 'properties': {'migration-id': {'type': 'string'}, ++ 'phase': {'type': 'string'}, ++ 'success': {'type': 'boolean'}}, ++ 'required': ['migration-id', ++ 'phase', ++ 'success'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}}, ++ 'properties': {'Report': {'properties': {'Params': {'$ref': '#/definitions/MinionReport'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def Report(self, migration_id, phase, success): ++ ''' ++ migration_id : str ++ phase : str ++ success : bool ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMinion', request='Report', version=1, params=_params) ++ _params['migration-id'] = migration_id ++ _params['phase'] = phase ++ _params['success'] = success ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def Watch(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationMinion', request='Watch', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MigrationStatusWatcherFacade(Type): ++ name = 'MigrationStatusWatcher' ++ version = 1 ++ schema = {'definitions': {'MigrationStatus': {'additionalProperties': False, ++ 'properties': {'attempt': {'type': 'integer'}, ++ 'migration-id': {'type': 'string'}, ++ 'phase': {'type': 'string'}, ++ 'source-api-addrs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'source-ca-cert': {'type': 'string'}, ++ 'target-api-addrs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'target-ca-cert': {'type': 'string'}}, ++ 'required': ['migration-id', ++ 'attempt', ++ 'phase', ++ 'source-api-addrs', ++ 'source-ca-cert', ++ 'target-api-addrs', ++ 'target-ca-cert'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/MigrationStatus'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(MigrationStatus) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[int, typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationStatusWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationStatusWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MigrationTargetFacade(Type): ++ name = 'MigrationTarget' ++ version = 1 ++ schema = {'definitions': {'AdoptResourcesArgs': {'additionalProperties': False, ++ 'properties': {'model-tag': {'type': 'string'}, ++ 'source-controller-version': {'$ref': '#/definitions/Number'}}, ++ 'required': ['model-tag', ++ 'source-controller-version'], ++ 'type': 'object'}, ++ 'BytesResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'MigrationModelInfo': {'additionalProperties': False, ++ 'properties': {'agent-version': {'$ref': '#/definitions/Number'}, ++ 'controller-agent-version': {'$ref': '#/definitions/Number'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['uuid', ++ 'name', ++ 'owner-tag', ++ 'agent-version', ++ 'controller-agent-version'], ++ 'type': 'object'}, ++ 'ModelArgs': {'additionalProperties': False, ++ 'properties': {'model-tag': {'type': 'string'}}, ++ 'required': ['model-tag'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'SerializedModel': {'additionalProperties': False, ++ 'properties': {'bytes': {'items': {'type': 'integer'}, ++ 'type': 'array'}, ++ 'charms': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'resources': {'items': {'$ref': '#/definitions/SerializedModelResource'}, ++ 'type': 'array'}, ++ 'tools': {'items': {'$ref': '#/definitions/SerializedModelTools'}, ++ 'type': 'array'}}, ++ 'required': ['bytes', ++ 'charms', ++ 'tools', ++ 'resources'], ++ 'type': 'object'}, ++ 'SerializedModelResource': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'application-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'}, ++ 'charmstore-revision': {'$ref': '#/definitions/SerializedModelResourceRevision'}, ++ 'name': {'type': 'string'}, ++ 'unit-revisions': {'patternProperties': {'.*': {'$ref': '#/definitions/SerializedModelResourceRevision'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'name', ++ 'application-revision', ++ 'charmstore-revision', ++ 'unit-revisions'], ++ 'type': 'object'}, ++ 'SerializedModelResourceRevision': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'fingerprint': {'type': 'string'}, ++ 'origin': {'type': 'string'}, ++ 'path': {'type': 'string'}, ++ 'revision': {'type': 'integer'}, ++ 'size': {'type': 'integer'}, ++ 'timestamp': {'format': 'date-time', ++ 'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'username': {'type': 'string'}}, ++ 'required': ['revision', ++ 'type', ++ 'path', ++ 'description', ++ 'origin', ++ 'fingerprint', ++ 'size', ++ 'timestamp'], ++ 'type': 'object'}, ++ 'SerializedModelTools': {'additionalProperties': False, ++ 'properties': {'uri': {'type': 'string'}, ++ 'version': {'type': 'string'}}, ++ 'required': ['version', 'uri'], ++ 'type': 'object'}}, ++ 'properties': {'Abort': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}}, ++ 'type': 'object'}, ++ 'Activate': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}}, ++ 'type': 'object'}, ++ 'AdoptResources': {'properties': {'Params': {'$ref': '#/definitions/AdoptResourcesArgs'}}, ++ 'type': 'object'}, ++ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}}, ++ 'type': 'object'}, ++ 'Import': {'properties': {'Params': {'$ref': '#/definitions/SerializedModel'}}, ++ 'type': 'object'}, ++ 'LatestLogTime': {'properties': {'Params': {'$ref': '#/definitions/ModelArgs'}, ++ 'Result': {'format': 'date-time', ++ 'type': 'string'}}, ++ 'type': 'object'}, ++ 'Prechecks': {'properties': {'Params': {'$ref': '#/definitions/MigrationModelInfo'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def Abort(self, model_tag): ++ ''' ++ model_tag : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationTarget', request='Abort', version=1, params=_params) ++ _params['model-tag'] = model_tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Activate(self, model_tag): ++ ''' ++ model_tag : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationTarget', request='Activate', version=1, params=_params) ++ _params['model-tag'] = model_tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def AdoptResources(self, model_tag, source_controller_version): ++ ''' ++ model_tag : str ++ source_controller_version : Number ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationTarget', request='AdoptResources', version=1, params=_params) ++ _params['model-tag'] = model_tag ++ _params['source-controller-version'] = source_controller_version ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BytesResult) ++ async def CACert(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationTarget', request='CACert', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Import(self, bytes_, charms, tools): ++ ''' ++ bytes_ : typing.Sequence<+T_co>[int] ++ charms : typing.Sequence<+T_co>[str] ++ tools : typing.Sequence<+T_co>[~SerializedModelTools]<~SerializedModelTools> ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationTarget', request='Import', version=1, params=_params) ++ _params['bytes'] = bytes_ ++ _params['charms'] = charms ++ _params['tools'] = tools ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(str) ++ async def LatestLogTime(self, model_tag): ++ ''' ++ model_tag : str ++ Returns -> str ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationTarget', request='LatestLogTime', version=1, params=_params) ++ _params['model-tag'] = model_tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Prechecks(self, agent_version, name, owner_tag, uuid): ++ ''' ++ agent_version : Number ++ name : str ++ owner_tag : str ++ uuid : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MigrationTarget', request='Prechecks', version=1, params=_params) ++ _params['agent-version'] = agent_version ++ _params['name'] = name ++ _params['owner-tag'] = owner_tag ++ _params['uuid'] = uuid ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ModelConfigFacade(Type): ++ name = 'ModelConfig' ++ version = 1 ++ schema = {'definitions': {'ConfigValue': {'additionalProperties': False, ++ 'properties': {'source': {'type': 'string'}, ++ 'value': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'required': ['value', 'source'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModelConfigResults': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelSLA': {'additionalProperties': False, ++ 'properties': {'ModelSLAInfo': {'$ref': '#/definitions/ModelSLAInfo'}, ++ 'creds': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['ModelSLAInfo', 'creds'], ++ 'type': 'object'}, ++ 'ModelSLAInfo': {'additionalProperties': False, ++ 'properties': {'level': {'type': 'string'}, ++ 'owner': {'type': 'string'}}, ++ 'required': ['level', 'owner'], ++ 'type': 'object'}, ++ 'ModelSet': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelUnset': {'additionalProperties': False, ++ 'properties': {'keys': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['keys'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}}, ++ 'properties': {'ModelGet': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}}, ++ 'type': 'object'}, ++ 'ModelSet': {'properties': {'Params': {'$ref': '#/definitions/ModelSet'}}, ++ 'type': 'object'}, ++ 'ModelUnset': {'properties': {'Params': {'$ref': '#/definitions/ModelUnset'}}, ++ 'type': 'object'}, ++ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'SetSLALevel': {'properties': {'Params': {'$ref': '#/definitions/ModelSLA'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ModelConfigResults) ++ async def ModelGet(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelConfig', request='ModelGet', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def ModelSet(self, config): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelConfig', request='ModelSet', version=1, params=_params) ++ _params['config'] = config ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def ModelUnset(self, keys): ++ ''' ++ keys : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelConfig', request='ModelUnset', version=1, params=_params) ++ _params['keys'] = keys ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def SLALevel(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelConfig', request='SLALevel', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetSLALevel(self, creds, level): ++ ''' ++ creds : typing.Sequence<+T_co>[int] ++ level : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelConfig', request='SetSLALevel', version=1, params=_params) ++ _params['creds'] = creds ++ _params['level'] = level ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class NotifyWatcherFacade(Type): ++ name = 'NotifyWatcher' ++ version = 1 ++ schema = {'properties': {'Next': {'type': 'object'}, 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def Next(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='NotifyWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='NotifyWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class PayloadsFacade(Type): ++ name = 'Payloads' ++ version = 1 ++ schema = {'definitions': {'Payload': {'additionalProperties': False, ++ 'properties': {'class': {'type': 'string'}, ++ 'id': {'type': 'string'}, ++ 'labels': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'machine': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['class', ++ 'type', ++ 'id', ++ 'status', ++ 'labels', ++ 'unit', ++ 'machine'], ++ 'type': 'object'}, ++ 'PayloadListArgs': {'additionalProperties': False, ++ 'properties': {'patterns': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['patterns'], ++ 'type': 'object'}, ++ 'PayloadListResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/Payload'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'List': {'properties': {'Params': {'$ref': '#/definitions/PayloadListArgs'}, ++ 'Result': {'$ref': '#/definitions/PayloadListResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(PayloadListResults) ++ async def List(self, patterns): ++ ''' ++ patterns : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~Payload]<~Payload> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Payloads', request='List', version=1, params=_params) ++ _params['patterns'] = patterns ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class PayloadsHookContextFacade(Type): ++ name = 'PayloadsHookContext' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'LookUpPayloadArg': {'additionalProperties': False, ++ 'properties': {'id': {'type': 'string'}, ++ 'name': {'type': 'string'}}, ++ 'required': ['name', 'id'], ++ 'type': 'object'}, ++ 'LookUpPayloadArgs': {'additionalProperties': False, ++ 'properties': {'args': {'items': {'$ref': '#/definitions/LookUpPayloadArg'}, ++ 'type': 'array'}}, ++ 'required': ['args'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Payload': {'additionalProperties': False, ++ 'properties': {'class': {'type': 'string'}, ++ 'id': {'type': 'string'}, ++ 'labels': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'machine': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['class', ++ 'type', ++ 'id', ++ 'status', ++ 'labels', ++ 'unit', ++ 'machine'], ++ 'type': 'object'}, ++ 'PayloadResult': {'additionalProperties': False, ++ 'properties': {'Entity': {'$ref': '#/definitions/Entity'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'not-found': {'type': 'boolean'}, ++ 'payload': {'$ref': '#/definitions/Payload'}}, ++ 'required': ['Entity', ++ 'payload', ++ 'not-found'], ++ 'type': 'object'}, ++ 'PayloadResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/PayloadResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SetPayloadStatusArg': {'additionalProperties': False, ++ 'properties': {'Entity': {'$ref': '#/definitions/Entity'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['Entity', 'status'], ++ 'type': 'object'}, ++ 'SetPayloadStatusArgs': {'additionalProperties': False, ++ 'properties': {'args': {'items': {'$ref': '#/definitions/SetPayloadStatusArg'}, ++ 'type': 'array'}}, ++ 'required': ['args'], ++ 'type': 'object'}, ++ 'TrackPayloadArgs': {'additionalProperties': False, ++ 'properties': {'payloads': {'items': {'$ref': '#/definitions/Payload'}, ++ 'type': 'array'}}, ++ 'required': ['payloads'], ++ 'type': 'object'}}, ++ 'properties': {'List': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/PayloadResults'}}, ++ 'type': 'object'}, ++ 'LookUp': {'properties': {'Params': {'$ref': '#/definitions/LookUpPayloadArgs'}, ++ 'Result': {'$ref': '#/definitions/PayloadResults'}}, ++ 'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetPayloadStatusArgs'}, ++ 'Result': {'$ref': '#/definitions/PayloadResults'}}, ++ 'type': 'object'}, ++ 'Track': {'properties': {'Params': {'$ref': '#/definitions/TrackPayloadArgs'}, ++ 'Result': {'$ref': '#/definitions/PayloadResults'}}, ++ 'type': 'object'}, ++ 'Untrack': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/PayloadResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(PayloadResults) ++ async def List(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='PayloadsHookContext', request='List', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(PayloadResults) ++ async def LookUp(self, args): ++ ''' ++ args : typing.Sequence<+T_co>[~LookUpPayloadArg]<~LookUpPayloadArg> ++ Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='PayloadsHookContext', request='LookUp', version=1, params=_params) ++ _params['args'] = args ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(PayloadResults) ++ async def SetStatus(self, args): ++ ''' ++ args : typing.Sequence<+T_co>[~SetPayloadStatusArg]<~SetPayloadStatusArg> ++ Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='PayloadsHookContext', request='SetStatus', version=1, params=_params) ++ _params['args'] = args ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(PayloadResults) ++ async def Track(self, payloads): ++ ''' ++ payloads : typing.Sequence<+T_co>[~Payload]<~Payload> ++ Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='PayloadsHookContext', request='Track', version=1, params=_params) ++ _params['payloads'] = payloads ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(PayloadResults) ++ async def Untrack(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='PayloadsHookContext', request='Untrack', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class PingerFacade(Type): ++ name = 'Pinger' ++ version = 1 ++ schema = {'properties': {'Ping': {'type': 'object'}, 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def Ping(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Pinger', request='Ping', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Pinger', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ProxyUpdaterFacade(Type): ++ name = 'ProxyUpdater' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ProxyConfig': {'additionalProperties': False, ++ 'properties': {'ftp': {'type': 'string'}, ++ 'http': {'type': 'string'}, ++ 'https': {'type': 'string'}, ++ 'no-proxy': {'type': 'string'}}, ++ 'required': ['http', ++ 'https', ++ 'ftp', ++ 'no-proxy'], ++ 'type': 'object'}, ++ 'ProxyConfigResult': {'additionalProperties': False, ++ 'properties': {'apt-proxy-settings': {'$ref': '#/definitions/ProxyConfig'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'proxy-settings': {'$ref': '#/definitions/ProxyConfig'}}, ++ 'required': ['proxy-settings', ++ 'apt-proxy-settings'], ++ 'type': 'object'}, ++ 'ProxyConfigResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ProxyConfigResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'ProxyConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ProxyConfigResults'}}, ++ 'type': 'object'}, ++ 'WatchForProxyConfigAndAPIHostPortChanges': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ProxyConfigResults) ++ async def ProxyConfig(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ProxyConfigResult]<~ProxyConfigResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ProxyUpdater', request='ProxyConfig', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchForProxyConfigAndAPIHostPortChanges(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ProxyUpdater', request='WatchForProxyConfigAndAPIHostPortChanges', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class RelationUnitsWatcherFacade(Type): ++ name = 'RelationUnitsWatcher' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'RelationUnitsChange': {'additionalProperties': False, ++ 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}}, ++ 'type': 'object'}, ++ 'departed': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['changed'], ++ 'type': 'object'}, ++ 'RelationUnitsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id', ++ 'changes'], ++ 'type': 'object'}, ++ 'UnitSettings': {'additionalProperties': False, ++ 'properties': {'version': {'type': 'integer'}}, ++ 'required': ['version'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RelationUnitsWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(RelationUnitsWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('RelationUnitsChange'), _ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RelationUnitsWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RelationUnitsWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class RemoteApplicationWatcherFacade(Type): ++ name = 'RemoteApplicationWatcher' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'RemoteApplicationChange': {'additionalProperties': False, ++ 'properties': {'application-tag': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'relations': {'$ref': '#/definitions/RemoteRelationsChange'}}, ++ 'required': ['application-tag', ++ 'life', ++ 'relations'], ++ 'type': 'object'}, ++ 'RemoteApplicationWatchResult': {'additionalProperties': False, ++ 'properties': {'change': {'$ref': '#/definitions/RemoteApplicationChange'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'id': {'type': 'string'}}, ++ 'required': ['id'], ++ 'type': 'object'}, ++ 'RemoteEntityId': {'additionalProperties': False, ++ 'properties': {'model-uuid': {'type': 'string'}, ++ 'token': {'type': 'string'}}, ++ 'required': ['model-uuid', 'token'], ++ 'type': 'object'}, ++ 'RemoteRelationChange': {'additionalProperties': False, ++ 'properties': {'changed-units': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteRelationUnitChange'}}, ++ 'type': 'object'}, ++ 'departed-units': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'id': {'type': 'integer'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['id', 'life'], ++ 'type': 'object'}, ++ 'RemoteRelationUnitChange': {'additionalProperties': False, ++ 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'unit-id': {'$ref': '#/definitions/RemoteEntityId'}}, ++ 'required': ['unit-id'], ++ 'type': 'object'}, ++ 'RemoteRelationsChange': {'additionalProperties': False, ++ 'properties': {'changed': {'items': {'$ref': '#/definitions/RemoteRelationChange'}, ++ 'type': 'array'}, ++ 'initial': {'type': 'boolean'}, ++ 'removed': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['initial'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RemoteApplicationWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(RemoteApplicationWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('RemoteApplicationChange'), _ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RemoteApplicationWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RemoteApplicationWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class RemoteRelationsWatcherFacade(Type): ++ name = 'RemoteRelationsWatcher' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'RemoteEntityId': {'additionalProperties': False, ++ 'properties': {'model-uuid': {'type': 'string'}, ++ 'token': {'type': 'string'}}, ++ 'required': ['model-uuid', 'token'], ++ 'type': 'object'}, ++ 'RemoteRelationChange': {'additionalProperties': False, ++ 'properties': {'changed-units': {'patternProperties': {'.*': {'$ref': '#/definitions/RemoteRelationUnitChange'}}, ++ 'type': 'object'}, ++ 'departed-units': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'id': {'type': 'integer'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['id', 'life'], ++ 'type': 'object'}, ++ 'RemoteRelationUnitChange': {'additionalProperties': False, ++ 'properties': {'settings': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'unit-id': {'$ref': '#/definitions/RemoteEntityId'}}, ++ 'required': ['unit-id'], ++ 'type': 'object'}, ++ 'RemoteRelationsChange': {'additionalProperties': False, ++ 'properties': {'changed': {'items': {'$ref': '#/definitions/RemoteRelationChange'}, ++ 'type': 'array'}, ++ 'initial': {'type': 'boolean'}, ++ 'removed': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['initial'], ++ 'type': 'object'}, ++ 'RemoteRelationsWatchResult': {'additionalProperties': False, ++ 'properties': {'RemoteRelationsWatcherId': {'type': 'string'}, ++ 'change': {'$ref': '#/definitions/RemoteRelationsChange'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['RemoteRelationsWatcherId'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/RemoteRelationsWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(RemoteRelationsWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('RemoteRelationsChange'), _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RemoteRelationsWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RemoteRelationsWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ResourcesFacade(Type): ++ name = 'Resources' ++ version = 1 ++ schema = {'definitions': {'AddCharmWithAuthorization': {'additionalProperties': False, ++ 'properties': {'channel': {'type': 'string'}, ++ 'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'url': {'type': 'string'}}, ++ 'required': ['url', ++ 'channel', ++ 'macaroon'], ++ 'type': 'object'}, ++ 'AddPendingResourcesArgs': {'additionalProperties': False, ++ 'properties': {'AddCharmWithAuthorization': {'$ref': '#/definitions/AddCharmWithAuthorization'}, ++ 'Entity': {'$ref': '#/definitions/Entity'}, ++ 'resources': {'items': {'$ref': '#/definitions/CharmResource'}, ++ 'type': 'array'}}, ++ 'required': ['Entity', ++ 'AddCharmWithAuthorization', ++ 'resources'], ++ 'type': 'object'}, ++ 'AddPendingResourcesResult': {'additionalProperties': False, ++ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'}, ++ 'pending-ids': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['ErrorResult', ++ 'pending-ids'], ++ 'type': 'object'}, ++ 'CharmResource': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'fingerprint': {'items': {'type': 'integer'}, ++ 'type': 'array'}, ++ 'name': {'type': 'string'}, ++ 'origin': {'type': 'string'}, ++ 'path': {'type': 'string'}, ++ 'revision': {'type': 'integer'}, ++ 'size': {'type': 'integer'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['name', ++ 'type', ++ 'path', ++ 'origin', ++ 'revision', ++ 'fingerprint', ++ 'size'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ListResourcesArgs': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Resource': {'additionalProperties': False, ++ 'properties': {'CharmResource': {'$ref': '#/definitions/CharmResource'}, ++ 'application': {'type': 'string'}, ++ 'id': {'type': 'string'}, ++ 'pending-id': {'type': 'string'}, ++ 'timestamp': {'format': 'date-time', ++ 'type': 'string'}, ++ 'username': {'type': 'string'}}, ++ 'required': ['CharmResource', ++ 'id', ++ 'pending-id', ++ 'application', ++ 'username', ++ 'timestamp'], ++ 'type': 'object'}, ++ 'ResourcesResult': {'additionalProperties': False, ++ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'}, ++ 'charm-store-resources': {'items': {'$ref': '#/definitions/CharmResource'}, ++ 'type': 'array'}, ++ 'resources': {'items': {'$ref': '#/definitions/Resource'}, ++ 'type': 'array'}, ++ 'unit-resources': {'items': {'$ref': '#/definitions/UnitResources'}, ++ 'type': 'array'}}, ++ 'required': ['ErrorResult', ++ 'resources', ++ 'charm-store-resources', ++ 'unit-resources'], ++ 'type': 'object'}, ++ 'ResourcesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ResourcesResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'UnitResources': {'additionalProperties': False, ++ 'properties': {'Entity': {'$ref': '#/definitions/Entity'}, ++ 'download-progress': {'patternProperties': {'.*': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'resources': {'items': {'$ref': '#/definitions/Resource'}, ++ 'type': 'array'}}, ++ 'required': ['Entity', ++ 'resources', ++ 'download-progress'], ++ 'type': 'object'}}, ++ 'properties': {'AddPendingResources': {'properties': {'Params': {'$ref': '#/definitions/AddPendingResourcesArgs'}, ++ 'Result': {'$ref': '#/definitions/AddPendingResourcesResult'}}, ++ 'type': 'object'}, ++ 'ListResources': {'properties': {'Params': {'$ref': '#/definitions/ListResourcesArgs'}, ++ 'Result': {'$ref': '#/definitions/ResourcesResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddPendingResourcesResult) ++ async def AddPendingResources(self, addcharmwithauthorization, entity, resources): ++ ''' ++ addcharmwithauthorization : AddCharmWithAuthorization ++ entity : Entity ++ resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource> ++ Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Resources', request='AddPendingResources', version=1, params=_params) ++ _params['AddCharmWithAuthorization'] = addcharmwithauthorization ++ _params['Entity'] = entity ++ _params['Resources'] = resources ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ResourcesResults) ++ async def ListResources(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ResourcesResult]<~ResourcesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Resources', request='ListResources', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ResourcesHookContextFacade(Type): ++ name = 'ResourcesHookContext' ++ version = 1 ++ schema = {'definitions': {'CharmResource': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'fingerprint': {'items': {'type': 'integer'}, ++ 'type': 'array'}, ++ 'name': {'type': 'string'}, ++ 'origin': {'type': 'string'}, ++ 'path': {'type': 'string'}, ++ 'revision': {'type': 'integer'}, ++ 'size': {'type': 'integer'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['name', ++ 'type', ++ 'path', ++ 'origin', ++ 'revision', ++ 'fingerprint', ++ 'size'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ListUnitResourcesArgs': {'additionalProperties': False, ++ 'properties': {'resource-names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['resource-names'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Resource': {'additionalProperties': False, ++ 'properties': {'CharmResource': {'$ref': '#/definitions/CharmResource'}, ++ 'application': {'type': 'string'}, ++ 'id': {'type': 'string'}, ++ 'pending-id': {'type': 'string'}, ++ 'timestamp': {'format': 'date-time', ++ 'type': 'string'}, ++ 'username': {'type': 'string'}}, ++ 'required': ['CharmResource', ++ 'id', ++ 'pending-id', ++ 'application', ++ 'username', ++ 'timestamp'], ++ 'type': 'object'}, ++ 'UnitResourceResult': {'additionalProperties': False, ++ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'}, ++ 'resource': {'$ref': '#/definitions/Resource'}}, ++ 'required': ['ErrorResult', 'resource'], ++ 'type': 'object'}, ++ 'UnitResourcesResult': {'additionalProperties': False, ++ 'properties': {'ErrorResult': {'$ref': '#/definitions/ErrorResult'}, ++ 'resources': {'items': {'$ref': '#/definitions/UnitResourceResult'}, ++ 'type': 'array'}}, ++ 'required': ['ErrorResult', ++ 'resources'], ++ 'type': 'object'}}, ++ 'properties': {'GetResourceInfo': {'properties': {'Params': {'$ref': '#/definitions/ListUnitResourcesArgs'}, ++ 'Result': {'$ref': '#/definitions/UnitResourcesResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(UnitResourcesResult) ++ async def GetResourceInfo(self, resource_names): ++ ''' ++ resource_names : typing.Sequence<+T_co>[str] ++ Returns -> typing.Union[_ForwardRef('ErrorResult'), typing.Sequence<+T_co>[~UnitResourceResult]<~UnitResourceResult>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ResourcesHookContext', request='GetResourceInfo', version=1, params=_params) ++ _params['resource-names'] = resource_names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class RetryStrategyFacade(Type): ++ name = 'RetryStrategy' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'RetryStrategy': {'additionalProperties': False, ++ 'properties': {'jitter-retry-time': {'type': 'boolean'}, ++ 'max-retry-time': {'type': 'integer'}, ++ 'min-retry-time': {'type': 'integer'}, ++ 'retry-time-factor': {'type': 'integer'}, ++ 'should-retry': {'type': 'boolean'}}, ++ 'required': ['should-retry', ++ 'min-retry-time', ++ 'max-retry-time', ++ 'jitter-retry-time', ++ 'retry-time-factor'], ++ 'type': 'object'}, ++ 'RetryStrategyResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/RetryStrategy'}}, ++ 'type': 'object'}, ++ 'RetryStrategyResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/RetryStrategyResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'RetryStrategy': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/RetryStrategyResults'}}, ++ 'type': 'object'}, ++ 'WatchRetryStrategy': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(RetryStrategyResults) ++ async def RetryStrategy(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~RetryStrategyResult]<~RetryStrategyResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RetryStrategy', request='RetryStrategy', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchRetryStrategy(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='RetryStrategy', request='WatchRetryStrategy', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class SSHClientFacade(Type): ++ name = 'SSHClient' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'SSHAddressResult': {'additionalProperties': False, ++ 'properties': {'address': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'SSHAddressResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SSHAddressResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SSHProxyResult': {'additionalProperties': False, ++ 'properties': {'use-proxy': {'type': 'boolean'}}, ++ 'required': ['use-proxy'], ++ 'type': 'object'}, ++ 'SSHPublicKeysResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'public-keys': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'SSHPublicKeysResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SSHPublicKeysResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/SSHAddressResults'}}, ++ 'type': 'object'}, ++ 'Proxy': {'properties': {'Result': {'$ref': '#/definitions/SSHProxyResult'}}, ++ 'type': 'object'}, ++ 'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/SSHAddressResults'}}, ++ 'type': 'object'}, ++ 'PublicKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/SSHPublicKeysResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(SSHAddressResults) ++ async def PrivateAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='PrivateAddress', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SSHProxyResult) ++ async def Proxy(self): ++ ''' ++ ++ Returns -> bool ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='Proxy', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SSHAddressResults) ++ async def PublicAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='PublicAddress', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SSHPublicKeysResults) ++ async def PublicKeys(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~SSHPublicKeysResult]<~SSHPublicKeysResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='PublicKeys', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class SingularFacade(Type): ++ name = 'Singular' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'SingularClaim': {'additionalProperties': False, ++ 'properties': {'controller-tag': {'type': 'string'}, ++ 'duration': {'type': 'integer'}, ++ 'model-tag': {'type': 'string'}}, ++ 'required': ['model-tag', ++ 'controller-tag', ++ 'duration'], ++ 'type': 'object'}, ++ 'SingularClaims': {'additionalProperties': False, ++ 'properties': {'claims': {'items': {'$ref': '#/definitions/SingularClaim'}, ++ 'type': 'array'}}, ++ 'required': ['claims'], ++ 'type': 'object'}}, ++ 'properties': {'Claim': {'properties': {'Params': {'$ref': '#/definitions/SingularClaims'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Wait': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Claim(self, claims): ++ ''' ++ claims : typing.Sequence<+T_co>[~SingularClaim]<~SingularClaim> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Singular', request='Claim', version=1, params=_params) ++ _params['claims'] = claims ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Wait(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Singular', request='Wait', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class StringsWatcherFacade(Type): ++ name = 'StringsWatcher' ++ version = 1 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringsWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StringsWatcher', request='Next', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StringsWatcher', request='Stop', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class UndertakerFacade(Type): ++ name = 'Undertaker' ++ version = 1 ++ schema = {'definitions': {'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'UndertakerModelInfo': {'additionalProperties': False, ++ 'properties': {'global-name': {'type': 'string'}, ++ 'is-system': {'type': 'boolean'}, ++ 'life': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['uuid', ++ 'name', ++ 'global-name', ++ 'is-system', ++ 'life'], ++ 'type': 'object'}, ++ 'UndertakerModelInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/UndertakerModelInfo'}}, ++ 'required': ['result'], ++ 'type': 'object'}}, ++ 'properties': {'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'ModelInfo': {'properties': {'Result': {'$ref': '#/definitions/UndertakerModelInfoResult'}}, ++ 'type': 'object'}, ++ 'ProcessDyingModel': {'type': 'object'}, ++ 'RemoveModel': {'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'WatchModelResources': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Undertaker', request='ModelConfig', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(UndertakerModelInfoResult) ++ async def ModelInfo(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('UndertakerModelInfo')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Undertaker', request='ModelInfo', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def ProcessDyingModel(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Undertaker', request='ProcessDyingModel', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def RemoveModel(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Undertaker', request='RemoveModel', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Undertaker', request='SetStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Undertaker', request='UpdateStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchModelResources(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Undertaker', request='WatchModelResources', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class UnitAssignerFacade(Type): ++ name = 'UnitAssigner' ++ version = 1 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}}, ++ 'properties': {'AssignUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetAgentStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'WatchUnitAssignments': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AssignUnits(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UnitAssigner', request='AssignUnits', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetAgentStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UnitAssigner', request='SetAgentStatus', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResult) ++ async def WatchUnitAssignments(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UnitAssigner', request='WatchUnitAssignments', version=1, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class UpgraderFacade(Type): ++ name = 'Upgrader' ++ version = 1 ++ schema = {'definitions': {'Binary': {'additionalProperties': False, ++ 'properties': {'Arch': {'type': 'string'}, ++ 'Number': {'$ref': '#/definitions/Number'}, ++ 'Series': {'type': 'string'}}, ++ 'required': ['Number', 'Series', 'Arch'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'EntitiesVersion': {'additionalProperties': False, ++ 'properties': {'agent-tools': {'items': {'$ref': '#/definitions/EntityVersion'}, ++ 'type': 'array'}}, ++ 'required': ['agent-tools'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityVersion': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}, ++ 'tools': {'$ref': '#/definitions/Version'}}, ++ 'required': ['tag', 'tools'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'Tools': {'additionalProperties': False, ++ 'properties': {'sha256': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'url': {'type': 'string'}, ++ 'version': {'$ref': '#/definitions/Binary'}}, ++ 'required': ['version', 'url', 'size'], ++ 'type': 'object'}, ++ 'ToolsResult': {'additionalProperties': False, ++ 'properties': {'disable-ssl-hostname-verification': {'type': 'boolean'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'tools': {'items': {'$ref': '#/definitions/Tools'}, ++ 'type': 'array'}}, ++ 'required': ['tools', ++ 'disable-ssl-hostname-verification'], ++ 'type': 'object'}, ++ 'ToolsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ToolsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Version': {'additionalProperties': False, ++ 'properties': {'version': {'$ref': '#/definitions/Binary'}}, ++ 'required': ['version'], ++ 'type': 'object'}, ++ 'VersionResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'version': {'$ref': '#/definitions/Number'}}, ++ 'type': 'object'}, ++ 'VersionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/VersionResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'DesiredVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/VersionResults'}}, ++ 'type': 'object'}, ++ 'SetTools': {'properties': {'Params': {'$ref': '#/definitions/EntitiesVersion'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Tools': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ToolsResults'}}, ++ 'type': 'object'}, ++ 'WatchAPIVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(VersionResults) ++ async def DesiredVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~VersionResult]<~VersionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Upgrader', request='DesiredVersion', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetTools(self, agent_tools): ++ ''' ++ agent_tools : typing.Sequence<+T_co>[~EntityVersion]<~EntityVersion> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Upgrader', request='SetTools', version=1, params=_params) ++ _params['agent-tools'] = agent_tools ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ToolsResults) ++ async def Tools(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ToolsResult]<~ToolsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Upgrader', request='Tools', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchAPIVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Upgrader', request='WatchAPIVersion', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class UserManagerFacade(Type): ++ name = 'UserManager' ++ version = 1 ++ schema = {'definitions': {'AddUser': {'additionalProperties': False, ++ 'properties': {'display-name': {'type': 'string'}, ++ 'password': {'type': 'string'}, ++ 'username': {'type': 'string'}}, ++ 'required': ['username', 'display-name'], ++ 'type': 'object'}, ++ 'AddUserResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'secret-key': {'items': {'type': 'integer'}, ++ 'type': 'array'}, ++ 'tag': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'AddUserResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/AddUserResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'AddUsers': {'additionalProperties': False, ++ 'properties': {'users': {'items': {'$ref': '#/definitions/AddUser'}, ++ 'type': 'array'}}, ++ 'required': ['users'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityPassword': {'additionalProperties': False, ++ 'properties': {'password': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'password'], ++ 'type': 'object'}, ++ 'EntityPasswords': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/EntityPassword'}, ++ 'type': 'array'}}, ++ 'required': ['changes'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'UserInfo': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'created-by': {'type': 'string'}, ++ 'date-created': {'format': 'date-time', ++ 'type': 'string'}, ++ 'disabled': {'type': 'boolean'}, ++ 'display-name': {'type': 'string'}, ++ 'last-connection': {'format': 'date-time', ++ 'type': 'string'}, ++ 'username': {'type': 'string'}}, ++ 'required': ['username', ++ 'display-name', ++ 'access', ++ 'created-by', ++ 'date-created', ++ 'disabled'], ++ 'type': 'object'}, ++ 'UserInfoRequest': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'include-disabled': {'type': 'boolean'}}, ++ 'required': ['entities', ++ 'include-disabled'], ++ 'type': 'object'}, ++ 'UserInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/UserInfo'}}, ++ 'type': 'object'}, ++ 'UserInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/UserInfoResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'AddUser': {'properties': {'Params': {'$ref': '#/definitions/AddUsers'}, ++ 'Result': {'$ref': '#/definitions/AddUserResults'}}, ++ 'type': 'object'}, ++ 'DisableUser': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'EnableUser': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'RemoveUser': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetPassword': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UserInfo': {'properties': {'Params': {'$ref': '#/definitions/UserInfoRequest'}, ++ 'Result': {'$ref': '#/definitions/UserInfoResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddUserResults) ++ async def AddUser(self, users): ++ ''' ++ users : typing.Sequence<+T_co>[~AddUser]<~AddUser> ++ Returns -> typing.Sequence<+T_co>[~AddUserResult]<~AddUserResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UserManager', request='AddUser', version=1, params=_params) ++ _params['users'] = users ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DisableUser(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UserManager', request='DisableUser', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnableUser(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UserManager', request='EnableUser', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RemoveUser(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UserManager', request='RemoveUser', version=1, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetPassword(self, changes): ++ ''' ++ changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UserManager', request='SetPassword', version=1, params=_params) ++ _params['changes'] = changes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(UserInfoResults) ++ async def UserInfo(self, entities, include_disabled): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ include_disabled : bool ++ Returns -> typing.Sequence<+T_co>[~UserInfoResult]<~UserInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='UserManager', request='UserInfo', version=1, params=_params) ++ _params['entities'] = entities ++ _params['include-disabled'] = include_disabled ++ reply = await self.rpc(msg) ++ return reply ++ ++ diff --cc modules/libjuju/juju/client/_client2.py index 0000000,0000000..283e803 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/_client2.py @@@ -1,0 -1,0 +1,4227 @@@ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++from juju.client.facade import Type, ReturnMapping ++from juju.client._definitions import * ++ ++ ++class ActionFacade(Type): ++ name = 'Action' ++ version = 2 ++ schema = {'definitions': {'Action': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'parameters': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'receiver': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'receiver', 'name'], ++ 'type': 'object'}, ++ 'ActionResult': {'additionalProperties': False, ++ 'properties': {'action': {'$ref': '#/definitions/Action'}, ++ 'completed': {'format': 'date-time', ++ 'type': 'string'}, ++ 'enqueued': {'format': 'date-time', ++ 'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'message': {'type': 'string'}, ++ 'output': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'started': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ActionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ActionSpec': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'params': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['description', 'params'], ++ 'type': 'object'}, ++ 'Actions': {'additionalProperties': False, ++ 'properties': {'actions': {'items': {'$ref': '#/definitions/Action'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ActionsByName': {'additionalProperties': False, ++ 'properties': {'actions': {'items': {'$ref': '#/definitions/ActionResult'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ActionsByNames': {'additionalProperties': False, ++ 'properties': {'actions': {'items': {'$ref': '#/definitions/ActionsByName'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ActionsByReceiver': {'additionalProperties': False, ++ 'properties': {'actions': {'items': {'$ref': '#/definitions/ActionResult'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'receiver': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ActionsByReceivers': {'additionalProperties': False, ++ 'properties': {'actions': {'items': {'$ref': '#/definitions/ActionsByReceiver'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ApplicationCharmActionsResult': {'additionalProperties': False, ++ 'properties': {'actions': {'patternProperties': {'.*': {'$ref': '#/definitions/ActionSpec'}}, ++ 'type': 'object'}, ++ 'application-tag': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ApplicationsCharmActionsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationCharmActionsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'FindActionsByNames': {'additionalProperties': False, ++ 'properties': {'names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FindTags': {'additionalProperties': False, ++ 'properties': {'prefixes': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['prefixes'], ++ 'type': 'object'}, ++ 'FindTagsResults': {'additionalProperties': False, ++ 'properties': {'matches': {'patternProperties': {'.*': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'type': 'object'}}, ++ 'required': ['matches'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'RunParams': {'additionalProperties': False, ++ 'properties': {'applications': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'commands': {'type': 'string'}, ++ 'machines': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'timeout': {'type': 'integer'}, ++ 'units': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['commands', 'timeout'], ++ 'type': 'object'}}, ++ 'properties': {'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}, ++ 'ApplicationsCharmsActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ApplicationsCharmActionsResults'}}, ++ 'type': 'object'}, ++ 'Cancel': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}, ++ 'Enqueue': {'properties': {'Params': {'$ref': '#/definitions/Actions'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}, ++ 'FindActionTagsByPrefix': {'properties': {'Params': {'$ref': '#/definitions/FindTags'}, ++ 'Result': {'$ref': '#/definitions/FindTagsResults'}}, ++ 'type': 'object'}, ++ 'FindActionsByNames': {'properties': {'Params': {'$ref': '#/definitions/FindActionsByNames'}, ++ 'Result': {'$ref': '#/definitions/ActionsByNames'}}, ++ 'type': 'object'}, ++ 'ListAll': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionsByReceivers'}}, ++ 'type': 'object'}, ++ 'ListCompleted': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionsByReceivers'}}, ++ 'type': 'object'}, ++ 'ListPending': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionsByReceivers'}}, ++ 'type': 'object'}, ++ 'ListRunning': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionsByReceivers'}}, ++ 'type': 'object'}, ++ 'Run': {'properties': {'Params': {'$ref': '#/definitions/RunParams'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}, ++ 'RunOnAllMachines': {'properties': {'Params': {'$ref': '#/definitions/RunParams'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ActionResults) ++ async def Actions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='Actions', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationsCharmActionsResults) ++ async def ApplicationsCharmsActions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ApplicationCharmActionsResult]<~ApplicationCharmActionsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='ApplicationsCharmsActions', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionResults) ++ async def Cancel(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='Cancel', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionResults) ++ async def Enqueue(self, actions): ++ ''' ++ actions : typing.Sequence<+T_co>[~Action]<~Action> ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='Enqueue', version=2, params=_params) ++ _params['actions'] = actions ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FindTagsResults) ++ async def FindActionTagsByPrefix(self, prefixes): ++ ''' ++ prefixes : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~Entity]<~Entity> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='FindActionTagsByPrefix', version=2, params=_params) ++ _params['prefixes'] = prefixes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionsByNames) ++ async def FindActionsByNames(self, names): ++ ''' ++ names : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~ActionsByName]<~ActionsByName> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='FindActionsByNames', version=2, params=_params) ++ _params['names'] = names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionsByReceivers) ++ async def ListAll(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='ListAll', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionsByReceivers) ++ async def ListCompleted(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='ListCompleted', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionsByReceivers) ++ async def ListPending(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='ListPending', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionsByReceivers) ++ async def ListRunning(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='ListRunning', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionResults) ++ async def Run(self, applications, commands, machines, timeout, units): ++ ''' ++ applications : typing.Sequence<+T_co>[str] ++ commands : str ++ machines : typing.Sequence<+T_co>[str] ++ timeout : int ++ units : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='Run', version=2, params=_params) ++ _params['applications'] = applications ++ _params['commands'] = commands ++ _params['machines'] = machines ++ _params['timeout'] = timeout ++ _params['units'] = units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionResults) ++ async def RunOnAllMachines(self, applications, commands, machines, timeout, units): ++ ''' ++ applications : typing.Sequence<+T_co>[str] ++ commands : str ++ machines : typing.Sequence<+T_co>[str] ++ timeout : int ++ units : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Action', request='RunOnAllMachines', version=2, params=_params) ++ _params['applications'] = applications ++ _params['commands'] = commands ++ _params['machines'] = machines ++ _params['timeout'] = timeout ++ _params['units'] = units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class AgentFacade(Type): ++ name = 'Agent' ++ version = 2 ++ schema = {'definitions': {'AgentGetEntitiesResult': {'additionalProperties': False, ++ 'properties': {'container-type': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'jobs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life', ++ 'jobs', ++ 'container-type'], ++ 'type': 'object'}, ++ 'AgentGetEntitiesResults': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/AgentGetEntitiesResult'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'CloudCredential': {'additionalProperties': False, ++ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'auth-type': {'type': 'string'}, ++ 'redacted': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['auth-type'], ++ 'type': 'object'}, ++ 'CloudSpec': {'additionalProperties': False, ++ 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'}, ++ 'endpoint': {'type': 'string'}, ++ 'identity-endpoint': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'region': {'type': 'string'}, ++ 'storage-endpoint': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['type', 'name'], ++ 'type': 'object'}, ++ 'CloudSpecResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/CloudSpec'}}, ++ 'type': 'object'}, ++ 'CloudSpecResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudSpecResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ControllerConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityPassword': {'additionalProperties': False, ++ 'properties': {'password': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'password'], ++ 'type': 'object'}, ++ 'EntityPasswords': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/EntityPassword'}, ++ 'type': 'array'}}, ++ 'required': ['changes'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'IsMasterResult': {'additionalProperties': False, ++ 'properties': {'master': {'type': 'boolean'}}, ++ 'required': ['master'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelTag': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StateServingInfo': {'additionalProperties': False, ++ 'properties': {'api-port': {'type': 'integer'}, ++ 'ca-private-key': {'type': 'string'}, ++ 'cert': {'type': 'string'}, ++ 'private-key': {'type': 'string'}, ++ 'shared-secret': {'type': 'string'}, ++ 'state-port': {'type': 'integer'}, ++ 'system-identity': {'type': 'string'}}, ++ 'required': ['api-port', ++ 'state-port', ++ 'cert', ++ 'private-key', ++ 'ca-private-key', ++ 'shared-secret', ++ 'system-identity'], ++ 'type': 'object'}}, ++ 'properties': {'ClearReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/CloudSpecResults'}}, ++ 'type': 'object'}, ++ 'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}}, ++ 'type': 'object'}, ++ 'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'}, ++ 'Result': {'$ref': '#/definitions/CloudSpecResult'}}, ++ 'type': 'object'}, ++ 'GetEntities': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/AgentGetEntitiesResults'}}, ++ 'type': 'object'}, ++ 'IsMaster': {'properties': {'Result': {'$ref': '#/definitions/IsMasterResult'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'StateServingInfo': {'properties': {'Result': {'$ref': '#/definitions/StateServingInfo'}}, ++ 'type': 'object'}, ++ 'WatchCredentials': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ClearReboot(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='ClearReboot', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CloudSpecResults) ++ async def CloudSpec(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='CloudSpec', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ControllerConfigResult) ++ async def ControllerConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='ControllerConfig', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CloudSpecResult) ++ async def GetCloudSpec(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='GetCloudSpec', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AgentGetEntitiesResults) ++ async def GetEntities(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~AgentGetEntitiesResult]<~AgentGetEntitiesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='GetEntities', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(IsMasterResult) ++ async def IsMaster(self): ++ ''' ++ ++ Returns -> bool ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='IsMaster', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='ModelConfig', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetPasswords(self, changes): ++ ''' ++ changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='SetPasswords', version=2, params=_params) ++ _params['changes'] = changes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StateServingInfo) ++ async def StateServingInfo(self): ++ ''' ++ ++ Returns -> typing.Union[int, str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='StateServingInfo', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchCredentials(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='WatchCredentials', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForModelConfigChanges(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Agent', request='WatchForModelConfigChanges', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class AllModelWatcherFacade(Type): ++ name = 'AllModelWatcher' ++ version = 2 ++ schema = {'definitions': {'AllWatcherNextResults': {'additionalProperties': False, ++ 'properties': {'deltas': {'items': {'$ref': '#/definitions/Delta'}, ++ 'type': 'array'}}, ++ 'required': ['deltas'], ++ 'type': 'object'}, ++ 'Delta': {'additionalProperties': False, ++ 'properties': {'entity': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'removed': {'type': 'boolean'}}, ++ 'required': ['removed', 'entity'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherNextResults'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AllWatcherNextResults) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~Delta]<~Delta> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='AllModelWatcher', request='Next', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='AllModelWatcher', request='Stop', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class AnnotationsFacade(Type): ++ name = 'Annotations' ++ version = 2 ++ schema = {'definitions': {'AnnotationsGetResult': {'additionalProperties': False, ++ 'properties': {'annotations': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'entity': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/ErrorResult'}}, ++ 'required': ['entity', 'annotations'], ++ 'type': 'object'}, ++ 'AnnotationsGetResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/AnnotationsGetResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'AnnotationsSet': {'additionalProperties': False, ++ 'properties': {'annotations': {'items': {'$ref': '#/definitions/EntityAnnotations'}, ++ 'type': 'array'}}, ++ 'required': ['annotations'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityAnnotations': {'additionalProperties': False, ++ 'properties': {'annotations': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'entity': {'type': 'string'}}, ++ 'required': ['entity', 'annotations'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'Get': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/AnnotationsGetResults'}}, ++ 'type': 'object'}, ++ 'Set': {'properties': {'Params': {'$ref': '#/definitions/AnnotationsSet'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AnnotationsGetResults) ++ async def Get(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~AnnotationsGetResult]<~AnnotationsGetResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Annotations', request='Get', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Set(self, annotations): ++ ''' ++ annotations : typing.Sequence<+T_co>[~EntityAnnotations]<~EntityAnnotations> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Annotations', request='Set', version=2, params=_params) ++ _params['annotations'] = annotations ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ApplicationFacade(Type): ++ name = 'Application' ++ version = 2 ++ schema = {'definitions': {'AddApplicationUnits': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'num-units', ++ 'placement'], ++ 'type': 'object'}, ++ 'AddApplicationUnitsResults': {'additionalProperties': False, ++ 'properties': {'units': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['units'], ++ 'type': 'object'}, ++ 'AddRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'AddRelationResults': {'additionalProperties': False, ++ 'properties': {'endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}}, ++ 'type': 'object'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelations': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelationsResults': {'additionalProperties': False, ++ 'properties': {'charm-relations': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['charm-relations'], ++ 'type': 'object'}, ++ 'ApplicationDeploy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-yaml': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}, ++ 'resources': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'series': {'type': 'string'}, ++ 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'series', ++ 'charm-url', ++ 'channel', ++ 'num-units', ++ 'config-yaml', ++ 'constraints'], ++ 'type': 'object'}, ++ 'ApplicationDestroy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationExpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGetResults': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm', ++ 'config', ++ 'constraints', ++ 'series'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredential': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'metrics-credentials': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'metrics-credentials'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredentials': {'additionalProperties': False, ++ 'properties': {'creds': {'items': {'$ref': '#/definitions/ApplicationMetricCredential'}, ++ 'type': 'array'}}, ++ 'required': ['creds'], ++ 'type': 'object'}, ++ 'ApplicationSet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationSetCharm': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config-settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-settings-yaml': {'type': 'string'}, ++ 'force-series': {'type': 'boolean'}, ++ 'force-units': {'type': 'boolean'}, ++ 'resource-ids': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'storage-constraints': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageConstraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'channel', ++ 'force-units', ++ 'force-series'], ++ 'type': 'object'}, ++ 'ApplicationUnexpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationUnset': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationUpdate': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'force-charm-url': {'type': 'boolean'}, ++ 'force-series': {'type': 'boolean'}, ++ 'min-units': {'type': 'integer'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'settings-yaml': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'force-charm-url', ++ 'force-series', ++ 'settings-yaml'], ++ 'type': 'object'}, ++ 'ApplicationsDeploy': {'additionalProperties': False, ++ 'properties': {'applications': {'items': {'$ref': '#/definitions/ApplicationDeploy'}, ++ 'type': 'array'}}, ++ 'required': ['applications'], ++ 'type': 'object'}, ++ 'CharmRelation': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'optional': {'type': 'boolean'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'optional', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'Constraints': {'additionalProperties': False, ++ 'properties': {'Count': {'type': 'integer'}, ++ 'Pool': {'type': 'string'}, ++ 'Size': {'type': 'integer'}}, ++ 'required': ['Pool', 'Size', 'Count'], ++ 'type': 'object'}, ++ 'DestroyApplicationUnits': {'additionalProperties': False, ++ 'properties': {'unit-names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['unit-names'], ++ 'type': 'object'}, ++ 'DestroyRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetApplicationConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'GetConstraintsResults': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Placement': {'additionalProperties': False, ++ 'properties': {'directive': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['scope', 'directive'], ++ 'type': 'object'}, ++ 'SetConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['application', 'constraints'], ++ 'type': 'object'}, ++ 'StorageConstraints': {'additionalProperties': False, ++ 'properties': {'count': {'type': 'integer'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'}, ++ 'Result': {'$ref': '#/definitions/AddRelationResults'}}, ++ 'type': 'object'}, ++ 'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationUnits'}, ++ 'Result': {'$ref': '#/definitions/AddApplicationUnitsResults'}}, ++ 'type': 'object'}, ++ 'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ApplicationCharmRelations'}, ++ 'Result': {'$ref': '#/definitions/ApplicationCharmRelationsResults'}}, ++ 'type': 'object'}, ++ 'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationsDeploy'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationDestroy'}}, ++ 'type': 'object'}, ++ 'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}}, ++ 'type': 'object'}, ++ 'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationUnits'}}, ++ 'type': 'object'}, ++ 'Expose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationExpose'}}, ++ 'type': 'object'}, ++ 'Get': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/ApplicationGetResults'}}, ++ 'type': 'object'}, ++ 'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/GetApplicationConstraints'}, ++ 'Result': {'$ref': '#/definitions/GetConstraintsResults'}}, ++ 'type': 'object'}, ++ 'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}}, ++ 'type': 'object'}, ++ 'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}}, ++ 'type': 'object'}, ++ 'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}}, ++ 'type': 'object'}, ++ 'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}}, ++ 'type': 'object'}, ++ 'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}}, ++ 'type': 'object'}, ++ 'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddRelationResults) ++ async def AddRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddRelation', version=2, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AddApplicationUnitsResults) ++ async def AddUnits(self, application, num_units, placement): ++ ''' ++ application : str ++ num_units : int ++ placement : typing.Sequence<+T_co>[~Placement]<~Placement> ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddUnits', version=2, params=_params) ++ _params['application'] = application ++ _params['num-units'] = num_units ++ _params['placement'] = placement ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationCharmRelationsResults) ++ async def CharmRelations(self, application): ++ ''' ++ application : str ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='CharmRelations', version=2, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Deploy(self, applications): ++ ''' ++ applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Deploy', version=2, params=_params) ++ _params['applications'] = applications ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Destroy(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Destroy', version=2, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyRelation', version=2, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyUnits(self, unit_names): ++ ''' ++ unit_names : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyUnits', version=2, params=_params) ++ _params['unit-names'] = unit_names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Expose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Expose', version=2, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationGetResults) ++ async def Get(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Get', version=2, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def GetCharmURL(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetCharmURL', version=2, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(GetConstraintsResults) ++ async def GetConstraints(self, application): ++ ''' ++ application : str ++ Returns -> Value ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetConstraints', version=2, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Set(self, application, options): ++ ''' ++ application : str ++ options : typing.Mapping<~KT, +VT_co>[str, str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Set', version=2, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetCharm(self, application, channel, charm_url, config_settings, config_settings_yaml, force_series, force_units, resource_ids, storage_constraints): ++ ''' ++ application : str ++ channel : str ++ charm_url : str ++ config_settings : typing.Mapping<~KT, +VT_co>[str, str] ++ config_settings_yaml : str ++ force_series : bool ++ force_units : bool ++ resource_ids : typing.Mapping<~KT, +VT_co>[str, str] ++ storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints> ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetCharm', version=2, params=_params) ++ _params['application'] = application ++ _params['channel'] = channel ++ _params['charm-url'] = charm_url ++ _params['config-settings'] = config_settings ++ _params['config-settings-yaml'] = config_settings_yaml ++ _params['force-series'] = force_series ++ _params['force-units'] = force_units ++ _params['resource-ids'] = resource_ids ++ _params['storage-constraints'] = storage_constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetConstraints(self, application, constraints): ++ ''' ++ application : str ++ constraints : Value ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetConstraints', version=2, params=_params) ++ _params['application'] = application ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetMetricCredentials(self, creds): ++ ''' ++ creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetMetricCredentials', version=2, params=_params) ++ _params['creds'] = creds ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unexpose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unexpose', version=2, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unset(self, application, options): ++ ''' ++ application : str ++ options : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unset', version=2, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Update(self, application, charm_url, constraints, force_charm_url, force_series, min_units, settings, settings_yaml): ++ ''' ++ application : str ++ charm_url : str ++ constraints : Value ++ force_charm_url : bool ++ force_series : bool ++ min_units : int ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ settings_yaml : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Update', version=2, params=_params) ++ _params['application'] = application ++ _params['charm-url'] = charm_url ++ _params['constraints'] = constraints ++ _params['force-charm-url'] = force_charm_url ++ _params['force-series'] = force_series ++ _params['min-units'] = min_units ++ _params['settings'] = settings ++ _params['settings-yaml'] = settings_yaml ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class BlockFacade(Type): ++ name = 'Block' ++ version = 2 ++ schema = {'definitions': {'Block': {'additionalProperties': False, ++ 'properties': {'id': {'type': 'string'}, ++ 'message': {'type': 'string'}, ++ 'tag': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['id', 'tag', 'type'], ++ 'type': 'object'}, ++ 'BlockResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/Block'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'BlockResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/BlockResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'BlockSwitchParams': {'additionalProperties': False, ++ 'properties': {'message': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['type'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'List': {'properties': {'Result': {'$ref': '#/definitions/BlockResults'}}, ++ 'type': 'object'}, ++ 'SwitchBlockOff': {'properties': {'Params': {'$ref': '#/definitions/BlockSwitchParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResult'}}, ++ 'type': 'object'}, ++ 'SwitchBlockOn': {'properties': {'Params': {'$ref': '#/definitions/BlockSwitchParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(BlockResults) ++ async def List(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~BlockResult]<~BlockResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Block', request='List', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResult) ++ async def SwitchBlockOff(self, message, type_): ++ ''' ++ message : str ++ type_ : str ++ Returns -> Error ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Block', request='SwitchBlockOff', version=2, params=_params) ++ _params['message'] = message ++ _params['type'] = type_ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResult) ++ async def SwitchBlockOn(self, message, type_): ++ ''' ++ message : str ++ type_ : str ++ Returns -> Error ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Block', request='SwitchBlockOn', version=2, params=_params) ++ _params['message'] = message ++ _params['type'] = type_ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class CharmRevisionUpdaterFacade(Type): ++ name = 'CharmRevisionUpdater' ++ version = 2 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'UpdateLatestRevisions': {'properties': {'Result': {'$ref': '#/definitions/ErrorResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResult) ++ async def UpdateLatestRevisions(self): ++ ''' ++ ++ Returns -> Error ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='CharmRevisionUpdater', request='UpdateLatestRevisions', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class CharmsFacade(Type): ++ name = 'Charms' ++ version = 2 ++ schema = {'definitions': {'CharmActionSpec': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'params': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['description', 'params'], ++ 'type': 'object'}, ++ 'CharmActions': {'additionalProperties': False, ++ 'properties': {'specs': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmActionSpec'}}, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'CharmInfo': {'additionalProperties': False, ++ 'properties': {'actions': {'$ref': '#/definitions/CharmActions'}, ++ 'config': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmOption'}}, ++ 'type': 'object'}, ++ 'meta': {'$ref': '#/definitions/CharmMeta'}, ++ 'metrics': {'$ref': '#/definitions/CharmMetrics'}, ++ 'revision': {'type': 'integer'}, ++ 'url': {'type': 'string'}}, ++ 'required': ['revision', 'url', 'config'], ++ 'type': 'object'}, ++ 'CharmMeta': {'additionalProperties': False, ++ 'properties': {'categories': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'description': {'type': 'string'}, ++ 'extra-bindings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'min-juju-version': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'payload-classes': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmPayloadClass'}}, ++ 'type': 'object'}, ++ 'peers': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}}, ++ 'type': 'object'}, ++ 'provides': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}}, ++ 'type': 'object'}, ++ 'requires': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}}, ++ 'type': 'object'}, ++ 'resources': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmResourceMeta'}}, ++ 'type': 'object'}, ++ 'series': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmStorage'}}, ++ 'type': 'object'}, ++ 'subordinate': {'type': 'boolean'}, ++ 'summary': {'type': 'string'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'terms': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['name', ++ 'summary', ++ 'description', ++ 'subordinate'], ++ 'type': 'object'}, ++ 'CharmMetric': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['type', 'description'], ++ 'type': 'object'}, ++ 'CharmMetrics': {'additionalProperties': False, ++ 'properties': {'metrics': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmMetric'}}, ++ 'type': 'object'}, ++ 'plan': {'$ref': '#/definitions/CharmPlan'}}, ++ 'required': ['metrics', 'plan'], ++ 'type': 'object'}, ++ 'CharmOption': {'additionalProperties': False, ++ 'properties': {'default': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'description': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['type'], ++ 'type': 'object'}, ++ 'CharmPayloadClass': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['name', 'type'], ++ 'type': 'object'}, ++ 'CharmPlan': {'additionalProperties': False, ++ 'properties': {'required': {'type': 'boolean'}}, ++ 'required': ['required'], ++ 'type': 'object'}, ++ 'CharmRelation': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'optional': {'type': 'boolean'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'optional', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'CharmResourceMeta': {'additionalProperties': False, ++ 'properties': {'description': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'path': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['name', ++ 'type', ++ 'path', ++ 'description'], ++ 'type': 'object'}, ++ 'CharmStorage': {'additionalProperties': False, ++ 'properties': {'count-max': {'type': 'integer'}, ++ 'count-min': {'type': 'integer'}, ++ 'description': {'type': 'string'}, ++ 'location': {'type': 'string'}, ++ 'minimum-size': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'properties': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'read-only': {'type': 'boolean'}, ++ 'shared': {'type': 'boolean'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['name', ++ 'description', ++ 'type', ++ 'shared', ++ 'read-only', ++ 'count-min', ++ 'count-max', ++ 'minimum-size'], ++ 'type': 'object'}, ++ 'CharmURL': {'additionalProperties': False, ++ 'properties': {'url': {'type': 'string'}}, ++ 'required': ['url'], ++ 'type': 'object'}, ++ 'CharmsList': {'additionalProperties': False, ++ 'properties': {'names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['names'], ++ 'type': 'object'}, ++ 'CharmsListResult': {'additionalProperties': False, ++ 'properties': {'charm-urls': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['charm-urls'], ++ 'type': 'object'}, ++ 'IsMeteredResult': {'additionalProperties': False, ++ 'properties': {'metered': {'type': 'boolean'}}, ++ 'required': ['metered'], ++ 'type': 'object'}}, ++ 'properties': {'CharmInfo': {'properties': {'Params': {'$ref': '#/definitions/CharmURL'}, ++ 'Result': {'$ref': '#/definitions/CharmInfo'}}, ++ 'type': 'object'}, ++ 'IsMetered': {'properties': {'Params': {'$ref': '#/definitions/CharmURL'}, ++ 'Result': {'$ref': '#/definitions/IsMeteredResult'}}, ++ 'type': 'object'}, ++ 'List': {'properties': {'Params': {'$ref': '#/definitions/CharmsList'}, ++ 'Result': {'$ref': '#/definitions/CharmsListResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(CharmInfo) ++ async def CharmInfo(self, url): ++ ''' ++ url : str ++ Returns -> typing.Union[_ForwardRef('CharmActions'), typing.Mapping<~KT, +VT_co>[str, ~CharmOption]<~CharmOption>, _ForwardRef('CharmMeta'), _ForwardRef('CharmMetrics'), int, str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Charms', request='CharmInfo', version=2, params=_params) ++ _params['url'] = url ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(IsMeteredResult) ++ async def IsMetered(self, url): ++ ''' ++ url : str ++ Returns -> bool ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Charms', request='IsMetered', version=2, params=_params) ++ _params['url'] = url ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CharmsListResult) ++ async def List(self, names): ++ ''' ++ names : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Charms', request='List', version=2, params=_params) ++ _params['names'] = names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class CleanerFacade(Type): ++ name = 'Cleaner' ++ version = 2 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}}, ++ 'properties': {'Cleanup': {'type': 'object'}, ++ 'WatchCleanups': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def Cleanup(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cleaner', request='Cleanup', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchCleanups(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Cleaner', request='WatchCleanups', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class DiscoverSpacesFacade(Type): ++ name = 'DiscoverSpaces' ++ version = 2 ++ schema = {'definitions': {'AddSubnetParams': {'additionalProperties': False, ++ 'properties': {'provider-network-id': {'type': 'string'}, ++ 'space-tag': {'type': 'string'}, ++ 'subnet-provider-id': {'type': 'string'}, ++ 'subnet-tag': {'type': 'string'}, ++ 'vlan-tag': {'type': 'integer'}, ++ 'zones': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['space-tag'], ++ 'type': 'object'}, ++ 'AddSubnetsParams': {'additionalProperties': False, ++ 'properties': {'subnets': {'items': {'$ref': '#/definitions/AddSubnetParams'}, ++ 'type': 'array'}}, ++ 'required': ['subnets'], ++ 'type': 'object'}, ++ 'CreateSpaceParams': {'additionalProperties': False, ++ 'properties': {'provider-id': {'type': 'string'}, ++ 'public': {'type': 'boolean'}, ++ 'space-tag': {'type': 'string'}, ++ 'subnet-tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['subnet-tags', ++ 'space-tag', ++ 'public'], ++ 'type': 'object'}, ++ 'CreateSpacesParams': {'additionalProperties': False, ++ 'properties': {'spaces': {'items': {'$ref': '#/definitions/CreateSpaceParams'}, ++ 'type': 'array'}}, ++ 'required': ['spaces'], ++ 'type': 'object'}, ++ 'DiscoverSpacesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ProviderSpace'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ListSubnetsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/Subnet'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ProviderSpace': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'subnets': {'items': {'$ref': '#/definitions/Subnet'}, ++ 'type': 'array'}}, ++ 'required': ['name', ++ 'provider-id', ++ 'subnets'], ++ 'type': 'object'}, ++ 'Subnet': {'additionalProperties': False, ++ 'properties': {'cidr': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-network-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'space-tag': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'vlan-tag': {'type': 'integer'}, ++ 'zones': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['cidr', ++ 'vlan-tag', ++ 'life', ++ 'space-tag', ++ 'zones'], ++ 'type': 'object'}, ++ 'SubnetsFilters': {'additionalProperties': False, ++ 'properties': {'space-tag': {'type': 'string'}, ++ 'zone': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'AddSubnets': {'properties': {'Params': {'$ref': '#/definitions/AddSubnetsParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'CreateSpaces': {'properties': {'Params': {'$ref': '#/definitions/CreateSpacesParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ListSpaces': {'properties': {'Result': {'$ref': '#/definitions/DiscoverSpacesResults'}}, ++ 'type': 'object'}, ++ 'ListSubnets': {'properties': {'Params': {'$ref': '#/definitions/SubnetsFilters'}, ++ 'Result': {'$ref': '#/definitions/ListSubnetsResults'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddSubnets(self, subnets): ++ ''' ++ subnets : typing.Sequence<+T_co>[~AddSubnetParams]<~AddSubnetParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='DiscoverSpaces', request='AddSubnets', version=2, params=_params) ++ _params['subnets'] = subnets ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def CreateSpaces(self, spaces): ++ ''' ++ spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='DiscoverSpaces', request='CreateSpaces', version=2, params=_params) ++ _params['spaces'] = spaces ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DiscoverSpacesResults) ++ async def ListSpaces(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~ProviderSpace]<~ProviderSpace> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='DiscoverSpaces', request='ListSpaces', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ListSubnetsResults) ++ async def ListSubnets(self, space_tag, zone): ++ ''' ++ space_tag : str ++ zone : str ++ Returns -> typing.Sequence<+T_co>[~Subnet]<~Subnet> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='DiscoverSpaces', request='ListSubnets', version=2, params=_params) ++ _params['space-tag'] = space_tag ++ _params['zone'] = zone ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='DiscoverSpaces', request='ModelConfig', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class DiskManagerFacade(Type): ++ name = 'DiskManager' ++ version = 2 ++ schema = {'definitions': {'BlockDevice': {'additionalProperties': False, ++ 'properties': {'BusAddress': {'type': 'string'}, ++ 'DeviceLinks': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'DeviceName': {'type': 'string'}, ++ 'FilesystemType': {'type': 'string'}, ++ 'HardwareId': {'type': 'string'}, ++ 'InUse': {'type': 'boolean'}, ++ 'Label': {'type': 'string'}, ++ 'MountPoint': {'type': 'string'}, ++ 'Size': {'type': 'integer'}, ++ 'UUID': {'type': 'string'}, ++ 'WWN': {'type': 'string'}}, ++ 'required': ['DeviceName', ++ 'DeviceLinks', ++ 'Label', ++ 'UUID', ++ 'HardwareId', ++ 'WWN', ++ 'BusAddress', ++ 'Size', ++ 'FilesystemType', ++ 'InUse', ++ 'MountPoint'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineBlockDevices': {'additionalProperties': False, ++ 'properties': {'block-devices': {'items': {'$ref': '#/definitions/BlockDevice'}, ++ 'type': 'array'}, ++ 'machine': {'type': 'string'}}, ++ 'required': ['machine'], ++ 'type': 'object'}, ++ 'SetMachineBlockDevices': {'additionalProperties': False, ++ 'properties': {'machine-block-devices': {'items': {'$ref': '#/definitions/MachineBlockDevices'}, ++ 'type': 'array'}}, ++ 'required': ['machine-block-devices'], ++ 'type': 'object'}}, ++ 'properties': {'SetMachineBlockDevices': {'properties': {'Params': {'$ref': '#/definitions/SetMachineBlockDevices'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetMachineBlockDevices(self, machine_block_devices): ++ ''' ++ machine_block_devices : typing.Sequence<+T_co>[~MachineBlockDevices]<~MachineBlockDevices> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='DiskManager', request='SetMachineBlockDevices', version=2, params=_params) ++ _params['machine-block-devices'] = machine_block_devices ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class EntityWatcherFacade(Type): ++ name = 'EntityWatcher' ++ version = 2 ++ schema = {'definitions': {'EntitiesWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/EntitiesWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(EntitiesWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='EntityWatcher', request='Next', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='EntityWatcher', request='Stop', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class FilesystemAttachmentsWatcherFacade(Type): ++ name = 'FilesystemAttachmentsWatcher' ++ version = 2 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineStorageId': {'additionalProperties': False, ++ 'properties': {'attachment-tag': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}}, ++ 'required': ['machine-tag', ++ 'attachment-tag'], ++ 'type': 'object'}, ++ 'MachineStorageIdsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/MachineStorageId'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id', ++ 'changes'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(MachineStorageIdsWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='FilesystemAttachmentsWatcher', request='Next', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='FilesystemAttachmentsWatcher', request='Stop', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class HighAvailabilityFacade(Type): ++ name = 'HighAvailability' ++ version = 2 ++ schema = {'definitions': {'Address': {'additionalProperties': False, ++ 'properties': {'Scope': {'type': 'string'}, ++ 'SpaceName': {'type': 'string'}, ++ 'SpaceProviderId': {'type': 'string'}, ++ 'Type': {'type': 'string'}, ++ 'Value': {'type': 'string'}}, ++ 'required': ['Value', ++ 'Type', ++ 'Scope', ++ 'SpaceName', ++ 'SpaceProviderId'], ++ 'type': 'object'}, ++ 'ControllersChangeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/ControllersChanges'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'ControllersChangeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ControllersChangeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ControllersChanges': {'additionalProperties': False, ++ 'properties': {'added': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'converted': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'demoted': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'maintained': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'promoted': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'removed': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ControllersSpec': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}, ++ 'num-controllers': {'type': 'integer'}, ++ 'placement': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['num-controllers'], ++ 'type': 'object'}, ++ 'ControllersSpecs': {'additionalProperties': False, ++ 'properties': {'specs': {'items': {'$ref': '#/definitions/ControllersSpec'}, ++ 'type': 'array'}}, ++ 'required': ['specs'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'HAMember': {'additionalProperties': False, ++ 'properties': {'public-address': {'$ref': '#/definitions/Address'}, ++ 'series': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'public-address', 'series'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Member': {'additionalProperties': False, ++ 'properties': {'Address': {'type': 'string'}, ++ 'Arbiter': {'type': 'boolean'}, ++ 'BuildIndexes': {'type': 'boolean'}, ++ 'Hidden': {'type': 'boolean'}, ++ 'Id': {'type': 'integer'}, ++ 'Priority': {'type': 'number'}, ++ 'SlaveDelay': {'type': 'integer'}, ++ 'Tags': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Votes': {'type': 'integer'}}, ++ 'required': ['Id', ++ 'Address', ++ 'Arbiter', ++ 'BuildIndexes', ++ 'Hidden', ++ 'Priority', ++ 'Tags', ++ 'SlaveDelay', ++ 'Votes'], ++ 'type': 'object'}, ++ 'MongoUpgradeResults': {'additionalProperties': False, ++ 'properties': {'ha-members': {'items': {'$ref': '#/definitions/HAMember'}, ++ 'type': 'array'}, ++ 'master': {'$ref': '#/definitions/HAMember'}, ++ 'rs-members': {'items': {'$ref': '#/definitions/Member'}, ++ 'type': 'array'}}, ++ 'required': ['rs-members', ++ 'master', ++ 'ha-members'], ++ 'type': 'object'}, ++ 'MongoVersion': {'additionalProperties': False, ++ 'properties': {'engine': {'type': 'string'}, ++ 'major': {'type': 'integer'}, ++ 'minor': {'type': 'integer'}, ++ 'patch': {'type': 'string'}}, ++ 'required': ['major', ++ 'minor', ++ 'patch', ++ 'engine'], ++ 'type': 'object'}, ++ 'ResumeReplicationParams': {'additionalProperties': False, ++ 'properties': {'members': {'items': {'$ref': '#/definitions/Member'}, ++ 'type': 'array'}}, ++ 'required': ['members'], ++ 'type': 'object'}, ++ 'UpgradeMongoParams': {'additionalProperties': False, ++ 'properties': {'target': {'$ref': '#/definitions/MongoVersion'}}, ++ 'required': ['target'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'EnableHA': {'properties': {'Params': {'$ref': '#/definitions/ControllersSpecs'}, ++ 'Result': {'$ref': '#/definitions/ControllersChangeResults'}}, ++ 'type': 'object'}, ++ 'ResumeHAReplicationAfterUpgrade': {'properties': {'Params': {'$ref': '#/definitions/ResumeReplicationParams'}}, ++ 'type': 'object'}, ++ 'StopHAReplicationForUpgrade': {'properties': {'Params': {'$ref': '#/definitions/UpgradeMongoParams'}, ++ 'Result': {'$ref': '#/definitions/MongoUpgradeResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ControllersChangeResults) ++ async def EnableHA(self, specs): ++ ''' ++ specs : typing.Sequence<+T_co>[~ControllersSpec]<~ControllersSpec> ++ Returns -> typing.Sequence<+T_co>[~ControllersChangeResult]<~ControllersChangeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='HighAvailability', request='EnableHA', version=2, params=_params) ++ _params['specs'] = specs ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def ResumeHAReplicationAfterUpgrade(self, members): ++ ''' ++ members : typing.Sequence<+T_co>[~Member]<~Member> ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='HighAvailability', request='ResumeHAReplicationAfterUpgrade', version=2, params=_params) ++ _params['members'] = members ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MongoUpgradeResults) ++ async def StopHAReplicationForUpgrade(self, target): ++ ''' ++ target : MongoVersion ++ Returns -> typing.Union[_ForwardRef('HAMember'), typing.Sequence<+T_co>[~Member]<~Member>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='HighAvailability', request='StopHAReplicationForUpgrade', version=2, params=_params) ++ _params['target'] = target ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ImageManagerFacade(Type): ++ name = 'ImageManager' ++ version = 2 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ImageFilterParams': {'additionalProperties': False, ++ 'properties': {'images': {'items': {'$ref': '#/definitions/ImageSpec'}, ++ 'type': 'array'}}, ++ 'required': ['images'], ++ 'type': 'object'}, ++ 'ImageMetadata': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'created': {'format': 'date-time', ++ 'type': 'string'}, ++ 'kind': {'type': 'string'}, ++ 'series': {'type': 'string'}, ++ 'url': {'type': 'string'}}, ++ 'required': ['kind', ++ 'arch', ++ 'series', ++ 'url', ++ 'created'], ++ 'type': 'object'}, ++ 'ImageSpec': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'kind': {'type': 'string'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['kind', 'arch', 'series'], ++ 'type': 'object'}, ++ 'ListImageResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'$ref': '#/definitions/ImageMetadata'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'DeleteImages': {'properties': {'Params': {'$ref': '#/definitions/ImageFilterParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ListImages': {'properties': {'Params': {'$ref': '#/definitions/ImageFilterParams'}, ++ 'Result': {'$ref': '#/definitions/ListImageResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DeleteImages(self, images): ++ ''' ++ images : typing.Sequence<+T_co>[~ImageSpec]<~ImageSpec> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ImageManager', request='DeleteImages', version=2, params=_params) ++ _params['images'] = images ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ListImageResult) ++ async def ListImages(self, images): ++ ''' ++ images : typing.Sequence<+T_co>[~ImageSpec]<~ImageSpec> ++ Returns -> typing.Sequence<+T_co>[~ImageMetadata]<~ImageMetadata> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ImageManager', request='ListImages', version=2, params=_params) ++ _params['images'] = images ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ImageMetadataFacade(Type): ++ name = 'ImageMetadata' ++ version = 2 ++ schema = {'definitions': {'CloudImageMetadata': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'image-id': {'type': 'string'}, ++ 'priority': {'type': 'integer'}, ++ 'region': {'type': 'string'}, ++ 'root-storage-size': {'type': 'integer'}, ++ 'root-storage-type': {'type': 'string'}, ++ 'series': {'type': 'string'}, ++ 'source': {'type': 'string'}, ++ 'stream': {'type': 'string'}, ++ 'version': {'type': 'string'}, ++ 'virt-type': {'type': 'string'}}, ++ 'required': ['image-id', ++ 'region', ++ 'version', ++ 'series', ++ 'arch', ++ 'source', ++ 'priority'], ++ 'type': 'object'}, ++ 'CloudImageMetadataList': {'additionalProperties': False, ++ 'properties': {'metadata': {'items': {'$ref': '#/definitions/CloudImageMetadata'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ImageMetadataFilter': {'additionalProperties': False, ++ 'properties': {'arches': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'region': {'type': 'string'}, ++ 'root-storage-type': {'type': 'string'}, ++ 'series': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'stream': {'type': 'string'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ListCloudImageMetadataResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'$ref': '#/definitions/CloudImageMetadata'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MetadataImageIds': {'additionalProperties': False, ++ 'properties': {'image-ids': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['image-ids'], ++ 'type': 'object'}, ++ 'MetadataSaveParams': {'additionalProperties': False, ++ 'properties': {'metadata': {'items': {'$ref': '#/definitions/CloudImageMetadataList'}, ++ 'type': 'array'}}, ++ 'type': 'object'}}, ++ 'properties': {'Delete': {'properties': {'Params': {'$ref': '#/definitions/MetadataImageIds'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'List': {'properties': {'Params': {'$ref': '#/definitions/ImageMetadataFilter'}, ++ 'Result': {'$ref': '#/definitions/ListCloudImageMetadataResult'}}, ++ 'type': 'object'}, ++ 'Save': {'properties': {'Params': {'$ref': '#/definitions/MetadataSaveParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UpdateFromPublishedImages': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Delete(self, image_ids): ++ ''' ++ image_ids : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ImageMetadata', request='Delete', version=2, params=_params) ++ _params['image-ids'] = image_ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ListCloudImageMetadataResult) ++ async def List(self, arches, region, root_storage_type, series, stream, virt_type): ++ ''' ++ arches : typing.Sequence<+T_co>[str] ++ region : str ++ root_storage_type : str ++ series : typing.Sequence<+T_co>[str] ++ stream : str ++ virt_type : str ++ Returns -> typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ImageMetadata', request='List', version=2, params=_params) ++ _params['arches'] = arches ++ _params['region'] = region ++ _params['root-storage-type'] = root_storage_type ++ _params['series'] = series ++ _params['stream'] = stream ++ _params['virt-type'] = virt_type ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Save(self, metadata): ++ ''' ++ metadata : typing.Sequence<+T_co>[~CloudImageMetadataList]<~CloudImageMetadataList> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ImageMetadata', request='Save', version=2, params=_params) ++ _params['metadata'] = metadata ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def UpdateFromPublishedImages(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ImageMetadata', request='UpdateFromPublishedImages', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class LeadershipServiceFacade(Type): ++ name = 'LeadershipService' ++ version = 2 ++ schema = {'definitions': {'ApplicationTag': {'additionalProperties': False, ++ 'properties': {'Name': {'type': 'string'}}, ++ 'required': ['Name'], ++ 'type': 'object'}, ++ 'ClaimLeadershipBulkParams': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/ClaimLeadershipParams'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'ClaimLeadershipBulkResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ClaimLeadershipParams': {'additionalProperties': False, ++ 'properties': {'application-tag': {'type': 'string'}, ++ 'duration': {'type': 'number'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['application-tag', ++ 'unit-tag', ++ 'duration'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}}, ++ 'properties': {'BlockUntilLeadershipReleased': {'properties': {'Params': {'$ref': '#/definitions/ApplicationTag'}, ++ 'Result': {'$ref': '#/definitions/ErrorResult'}}, ++ 'type': 'object'}, ++ 'ClaimLeadership': {'properties': {'Params': {'$ref': '#/definitions/ClaimLeadershipBulkParams'}, ++ 'Result': {'$ref': '#/definitions/ClaimLeadershipBulkResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResult) ++ async def BlockUntilLeadershipReleased(self, name): ++ ''' ++ name : str ++ Returns -> Error ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='LeadershipService', request='BlockUntilLeadershipReleased', version=2, params=_params) ++ _params['Name'] = name ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ClaimLeadershipBulkResults) ++ async def ClaimLeadership(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~ClaimLeadershipParams]<~ClaimLeadershipParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='LeadershipService', request='ClaimLeadership', version=2, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MachineManagerFacade(Type): ++ name = 'MachineManager' ++ version = 2 ++ schema = {'definitions': {'AddMachineParams': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'}, ++ 'type': 'array'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'container-type': {'type': 'string'}, ++ 'disks': {'items': {'$ref': '#/definitions/Constraints'}, ++ 'type': 'array'}, ++ 'hardware-characteristics': {'$ref': '#/definitions/HardwareCharacteristics'}, ++ 'instance-id': {'type': 'string'}, ++ 'jobs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'nonce': {'type': 'string'}, ++ 'parent-id': {'type': 'string'}, ++ 'placement': {'$ref': '#/definitions/Placement'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['series', ++ 'constraints', ++ 'jobs', ++ 'parent-id', ++ 'container-type', ++ 'instance-id', ++ 'nonce', ++ 'hardware-characteristics', ++ 'addresses'], ++ 'type': 'object'}, ++ 'AddMachines': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/AddMachineParams'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'AddMachinesResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'machine': {'type': 'string'}}, ++ 'required': ['machine'], ++ 'type': 'object'}, ++ 'AddMachinesResults': {'additionalProperties': False, ++ 'properties': {'machines': {'items': {'$ref': '#/definitions/AddMachinesResult'}, ++ 'type': 'array'}}, ++ 'required': ['machines'], ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'Constraints': {'additionalProperties': False, ++ 'properties': {'Count': {'type': 'integer'}, ++ 'Pool': {'type': 'string'}, ++ 'Size': {'type': 'integer'}}, ++ 'required': ['Pool', 'Size', 'Count'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'HardwareCharacteristics': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cpu-cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'InstanceType': {'additionalProperties': False, ++ 'properties': {'arches': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'cost': {'type': 'integer'}, ++ 'cpu-cores': {'type': 'integer'}, ++ 'deprecated': {'type': 'boolean'}, ++ 'memory': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'root-disk': {'type': 'integer'}, ++ 'virt-type': {'type': 'string'}}, ++ 'required': ['arches', 'cpu-cores', 'memory'], ++ 'type': 'object'}, ++ 'InstanceTypesResult': {'additionalProperties': False, ++ 'properties': {'cost-currency': {'type': 'string'}, ++ 'cost-divisor': {'type': 'integer'}, ++ 'cost-unit': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'instance-types': {'items': {'$ref': '#/definitions/InstanceType'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'InstanceTypesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/InstanceTypesResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModelInstanceTypesConstraint': {'additionalProperties': False, ++ 'properties': {'value': {'$ref': '#/definitions/Value'}}, ++ 'type': 'object'}, ++ 'ModelInstanceTypesConstraints': {'additionalProperties': False, ++ 'properties': {'constraints': {'items': {'$ref': '#/definitions/ModelInstanceTypesConstraint'}, ++ 'type': 'array'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'Placement': {'additionalProperties': False, ++ 'properties': {'directive': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['scope', 'directive'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'AddMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'}, ++ 'Result': {'$ref': '#/definitions/AddMachinesResults'}}, ++ 'type': 'object'}, ++ 'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/ModelInstanceTypesConstraints'}, ++ 'Result': {'$ref': '#/definitions/InstanceTypesResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddMachinesResults) ++ async def AddMachines(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams> ++ Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineManager', request='AddMachines', version=2, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(InstanceTypesResults) ++ async def InstanceTypes(self, constraints): ++ ''' ++ constraints : typing.Sequence<+T_co>[~ModelInstanceTypesConstraint]<~ModelInstanceTypesConstraint> ++ Returns -> typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineManager', request='InstanceTypes', version=2, params=_params) ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MetricsAdderFacade(Type): ++ name = 'MetricsAdder' ++ version = 2 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Metric': {'additionalProperties': False, ++ 'properties': {'key': {'type': 'string'}, ++ 'time': {'format': 'date-time', ++ 'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['key', 'value', 'time'], ++ 'type': 'object'}, ++ 'MetricBatch': {'additionalProperties': False, ++ 'properties': {'charm-url': {'type': 'string'}, ++ 'created': {'format': 'date-time', ++ 'type': 'string'}, ++ 'metrics': {'items': {'$ref': '#/definitions/Metric'}, ++ 'type': 'array'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['uuid', ++ 'charm-url', ++ 'created', ++ 'metrics'], ++ 'type': 'object'}, ++ 'MetricBatchParam': {'additionalProperties': False, ++ 'properties': {'batch': {'$ref': '#/definitions/MetricBatch'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'batch'], ++ 'type': 'object'}, ++ 'MetricBatchParams': {'additionalProperties': False, ++ 'properties': {'batches': {'items': {'$ref': '#/definitions/MetricBatchParam'}, ++ 'type': 'array'}}, ++ 'required': ['batches'], ++ 'type': 'object'}}, ++ 'properties': {'AddMetricBatches': {'properties': {'Params': {'$ref': '#/definitions/MetricBatchParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddMetricBatches(self, batches): ++ ''' ++ batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MetricsAdder', request='AddMetricBatches', version=2, params=_params) ++ _params['batches'] = batches ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MetricsDebugFacade(Type): ++ name = 'MetricsDebug' ++ version = 2 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityMetrics': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'metrics': {'items': {'$ref': '#/definitions/MetricResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MeterStatusParam': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'code', 'info'], ++ 'type': 'object'}, ++ 'MeterStatusParams': {'additionalProperties': False, ++ 'properties': {'statues': {'items': {'$ref': '#/definitions/MeterStatusParam'}, ++ 'type': 'array'}}, ++ 'required': ['statues'], ++ 'type': 'object'}, ++ 'MetricResult': {'additionalProperties': False, ++ 'properties': {'key': {'type': 'string'}, ++ 'time': {'format': 'date-time', ++ 'type': 'string'}, ++ 'unit': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['time', 'key', 'value', 'unit'], ++ 'type': 'object'}, ++ 'MetricResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/EntityMetrics'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'GetMetrics': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MetricResults'}}, ++ 'type': 'object'}, ++ 'SetMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/MeterStatusParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(MetricResults) ++ async def GetMetrics(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~EntityMetrics]<~EntityMetrics> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MetricsDebug', request='GetMetrics', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetMeterStatus(self, statues): ++ ''' ++ statues : typing.Sequence<+T_co>[~MeterStatusParam]<~MeterStatusParam> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MetricsDebug', request='SetMeterStatus', version=2, params=_params) ++ _params['statues'] = statues ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ModelManagerFacade(Type): ++ name = 'ModelManager' ++ version = 2 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatus': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['status', 'info', 'since'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineHardware': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'MapResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'MapResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MapResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Model': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', 'uuid', 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelCreateArgs': {'additionalProperties': False, ++ 'properties': {'cloud-tag': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'credential': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'region': {'type': 'string'}}, ++ 'required': ['name', 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelDefaultValues': {'additionalProperties': False, ++ 'properties': {'cloud-region': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelDefaults': {'additionalProperties': False, ++ 'properties': {'controller': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'default': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'regions': {'items': {'$ref': '#/definitions/RegionDefaults'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ModelDefaultsResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ModelDefaults'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelInfo': {'additionalProperties': False, ++ 'properties': {'agent-version': {'$ref': '#/definitions/Number'}, ++ 'cloud-credential-tag': {'type': 'string'}, ++ 'cloud-region': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'controller-uuid': {'type': 'string'}, ++ 'default-series': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'}, ++ 'type': 'array'}, ++ 'migration': {'$ref': '#/definitions/ModelMigrationStatus'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'provider-type': {'type': 'string'}, ++ 'sla': {'$ref': '#/definitions/ModelSLAInfo'}, ++ 'status': {'$ref': '#/definitions/EntityStatus'}, ++ 'users': {'items': {'$ref': '#/definitions/ModelUserInfo'}, ++ 'type': 'array'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', ++ 'uuid', ++ 'controller-uuid', ++ 'cloud-tag', ++ 'owner-tag', ++ 'life', ++ 'users', ++ 'machines', ++ 'sla', ++ 'agent-version'], ++ 'type': 'object'}, ++ 'ModelInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/ModelInfo'}}, ++ 'type': 'object'}, ++ 'ModelInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ModelInfoResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ModelMachineInfo': {'additionalProperties': False, ++ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'}, ++ 'has-vote': {'type': 'boolean'}, ++ 'id': {'type': 'string'}, ++ 'instance-id': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'wants-vote': {'type': 'boolean'}}, ++ 'required': ['id'], ++ 'type': 'object'}, ++ 'ModelMigrationStatus': {'additionalProperties': False, ++ 'properties': {'end': {'format': 'date-time', ++ 'type': 'string'}, ++ 'start': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['status', 'start'], ++ 'type': 'object'}, ++ 'ModelSLAInfo': {'additionalProperties': False, ++ 'properties': {'level': {'type': 'string'}, ++ 'owner': {'type': 'string'}}, ++ 'required': ['level', 'owner'], ++ 'type': 'object'}, ++ 'ModelStatus': {'additionalProperties': False, ++ 'properties': {'application-count': {'type': 'integer'}, ++ 'hosted-machine-count': {'type': 'integer'}, ++ 'life': {'type': 'string'}, ++ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'}, ++ 'type': 'array'}, ++ 'model-tag': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}}, ++ 'required': ['model-tag', ++ 'life', ++ 'hosted-machine-count', ++ 'application-count', ++ 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelStatusResults': {'additionalProperties': False, ++ 'properties': {'models': {'items': {'$ref': '#/definitions/ModelStatus'}, ++ 'type': 'array'}}, ++ 'required': ['models'], ++ 'type': 'object'}, ++ 'ModelUnsetKeys': {'additionalProperties': False, ++ 'properties': {'cloud-region': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'keys': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['keys'], ++ 'type': 'object'}, ++ 'ModelUserInfo': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'display-name': {'type': 'string'}, ++ 'last-connection': {'format': 'date-time', ++ 'type': 'string'}, ++ 'user': {'type': 'string'}}, ++ 'required': ['user', ++ 'display-name', ++ 'last-connection', ++ 'access'], ++ 'type': 'object'}, ++ 'ModifyModelAccess': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'action': {'type': 'string'}, ++ 'model-tag': {'type': 'string'}, ++ 'user-tag': {'type': 'string'}}, ++ 'required': ['user-tag', ++ 'action', ++ 'access', ++ 'model-tag'], ++ 'type': 'object'}, ++ 'ModifyModelAccessRequest': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyModelAccess'}, ++ 'type': 'array'}}, ++ 'required': ['changes'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'RegionDefaults': {'additionalProperties': False, ++ 'properties': {'region-name': {'type': 'string'}, ++ 'value': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'required': ['region-name', 'value'], ++ 'type': 'object'}, ++ 'SetModelDefaults': {'additionalProperties': False, ++ 'properties': {'config': {'items': {'$ref': '#/definitions/ModelDefaultValues'}, ++ 'type': 'array'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'UnsetModelDefaults': {'additionalProperties': False, ++ 'properties': {'keys': {'items': {'$ref': '#/definitions/ModelUnsetKeys'}, ++ 'type': 'array'}}, ++ 'required': ['keys'], ++ 'type': 'object'}, ++ 'UserModel': {'additionalProperties': False, ++ 'properties': {'last-connection': {'format': 'date-time', ++ 'type': 'string'}, ++ 'model': {'$ref': '#/definitions/Model'}}, ++ 'required': ['model', 'last-connection'], ++ 'type': 'object'}, ++ 'UserModelList': {'additionalProperties': False, ++ 'properties': {'user-models': {'items': {'$ref': '#/definitions/UserModel'}, ++ 'type': 'array'}}, ++ 'required': ['user-models'], ++ 'type': 'object'}}, ++ 'properties': {'CreateModel': {'properties': {'Params': {'$ref': '#/definitions/ModelCreateArgs'}, ++ 'Result': {'$ref': '#/definitions/ModelInfo'}}, ++ 'type': 'object'}, ++ 'DestroyModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'DumpModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MapResults'}}, ++ 'type': 'object'}, ++ 'DumpModelsDB': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MapResults'}}, ++ 'type': 'object'}, ++ 'ListModels': {'properties': {'Params': {'$ref': '#/definitions/Entity'}, ++ 'Result': {'$ref': '#/definitions/UserModelList'}}, ++ 'type': 'object'}, ++ 'ModelDefaults': {'properties': {'Result': {'$ref': '#/definitions/ModelDefaultsResult'}}, ++ 'type': 'object'}, ++ 'ModelInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ModelInfoResults'}}, ++ 'type': 'object'}, ++ 'ModelStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ModelStatusResults'}}, ++ 'type': 'object'}, ++ 'ModifyModelAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyModelAccessRequest'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetModelDefaults': {'properties': {'Params': {'$ref': '#/definitions/SetModelDefaults'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UnsetModelDefaults': {'properties': {'Params': {'$ref': '#/definitions/UnsetModelDefaults'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ModelInfo) ++ async def CreateModel(self, cloud_tag, config, credential, name, owner_tag, region): ++ ''' ++ cloud_tag : str ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ credential : str ++ name : str ++ owner_tag : str ++ region : str ++ Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='CreateModel', version=2, params=_params) ++ _params['cloud-tag'] = cloud_tag ++ _params['config'] = config ++ _params['credential'] = credential ++ _params['name'] = name ++ _params['owner-tag'] = owner_tag ++ _params['region'] = region ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DestroyModels(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='DestroyModels', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MapResults) ++ async def DumpModels(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MapResult]<~MapResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='DumpModels', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MapResults) ++ async def DumpModelsDB(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MapResult]<~MapResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='DumpModelsDB', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(UserModelList) ++ async def ListModels(self, tag): ++ ''' ++ tag : str ++ Returns -> typing.Sequence<+T_co>[~UserModel]<~UserModel> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ListModels', version=2, params=_params) ++ _params['tag'] = tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelDefaultsResult) ++ async def ModelDefaults(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~ModelDefaults]<~ModelDefaults> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModelDefaults', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelInfoResults) ++ async def ModelInfo(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ModelInfoResult]<~ModelInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModelInfo', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelStatusResults) ++ async def ModelStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModelStatus', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ModifyModelAccess(self, changes): ++ ''' ++ changes : typing.Sequence<+T_co>[~ModifyModelAccess]<~ModifyModelAccess> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModifyModelAccess', version=2, params=_params) ++ _params['changes'] = changes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetModelDefaults(self, config): ++ ''' ++ config : typing.Sequence<+T_co>[~ModelDefaultValues]<~ModelDefaultValues> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='SetModelDefaults', version=2, params=_params) ++ _params['config'] = config ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UnsetModelDefaults(self, keys): ++ ''' ++ keys : typing.Sequence<+T_co>[~ModelUnsetKeys]<~ModelUnsetKeys> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='UnsetModelDefaults', version=2, params=_params) ++ _params['keys'] = keys ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class RebootFacade(Type): ++ name = 'Reboot' ++ version = 2 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'RebootActionResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'RebootActionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/RebootActionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}}, ++ 'properties': {'ClearReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'GetRebootAction': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/RebootActionResults'}}, ++ 'type': 'object'}, ++ 'RequestReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'WatchForRebootEvent': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ClearReboot(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Reboot', request='ClearReboot', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RebootActionResults) ++ async def GetRebootAction(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~RebootActionResult]<~RebootActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Reboot', request='GetRebootAction', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RequestReboot(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Reboot', request='RequestReboot', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForRebootEvent(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Reboot', request='WatchForRebootEvent', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ResumerFacade(Type): ++ name = 'Resumer' ++ version = 2 ++ schema = {'properties': {'ResumeTransactions': {'type': 'object'}}, 'type': 'object'} ++ ++ ++ @ReturnMapping(None) ++ async def ResumeTransactions(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Resumer', request='ResumeTransactions', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class SSHClientFacade(Type): ++ name = 'SSHClient' ++ version = 2 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'SSHAddressResult': {'additionalProperties': False, ++ 'properties': {'address': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'SSHAddressResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SSHAddressResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SSHAddressesResult': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['addresses'], ++ 'type': 'object'}, ++ 'SSHAddressesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SSHAddressesResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SSHProxyResult': {'additionalProperties': False, ++ 'properties': {'use-proxy': {'type': 'boolean'}}, ++ 'required': ['use-proxy'], ++ 'type': 'object'}, ++ 'SSHPublicKeysResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'public-keys': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'SSHPublicKeysResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SSHPublicKeysResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'AllAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/SSHAddressesResults'}}, ++ 'type': 'object'}, ++ 'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/SSHAddressResults'}}, ++ 'type': 'object'}, ++ 'Proxy': {'properties': {'Result': {'$ref': '#/definitions/SSHProxyResult'}}, ++ 'type': 'object'}, ++ 'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/SSHAddressResults'}}, ++ 'type': 'object'}, ++ 'PublicKeys': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/SSHPublicKeysResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(SSHAddressesResults) ++ async def AllAddresses(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~SSHAddressesResult]<~SSHAddressesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='AllAddresses', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SSHAddressResults) ++ async def PrivateAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='PrivateAddress', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SSHProxyResult) ++ async def Proxy(self): ++ ''' ++ ++ Returns -> bool ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='Proxy', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SSHAddressResults) ++ async def PublicAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='PublicAddress', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SSHPublicKeysResults) ++ async def PublicKeys(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~SSHPublicKeysResult]<~SSHPublicKeysResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='SSHClient', request='PublicKeys', version=2, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class SpacesFacade(Type): ++ name = 'Spaces' ++ version = 2 ++ schema = {'definitions': {'CreateSpaceParams': {'additionalProperties': False, ++ 'properties': {'provider-id': {'type': 'string'}, ++ 'public': {'type': 'boolean'}, ++ 'space-tag': {'type': 'string'}, ++ 'subnet-tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['subnet-tags', ++ 'space-tag', ++ 'public'], ++ 'type': 'object'}, ++ 'CreateSpacesParams': {'additionalProperties': False, ++ 'properties': {'spaces': {'items': {'$ref': '#/definitions/CreateSpaceParams'}, ++ 'type': 'array'}}, ++ 'required': ['spaces'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ListSpacesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/Space'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Space': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}, ++ 'subnets': {'items': {'$ref': '#/definitions/Subnet'}, ++ 'type': 'array'}}, ++ 'required': ['name', 'subnets'], ++ 'type': 'object'}, ++ 'Subnet': {'additionalProperties': False, ++ 'properties': {'cidr': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-network-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'space-tag': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'vlan-tag': {'type': 'integer'}, ++ 'zones': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['cidr', ++ 'vlan-tag', ++ 'life', ++ 'space-tag', ++ 'zones'], ++ 'type': 'object'}}, ++ 'properties': {'CreateSpaces': {'properties': {'Params': {'$ref': '#/definitions/CreateSpacesParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ListSpaces': {'properties': {'Result': {'$ref': '#/definitions/ListSpacesResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def CreateSpaces(self, spaces): ++ ''' ++ spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Spaces', request='CreateSpaces', version=2, params=_params) ++ _params['spaces'] = spaces ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ListSpacesResults) ++ async def ListSpaces(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~Space]<~Space> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Spaces', request='ListSpaces', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class StatusHistoryFacade(Type): ++ name = 'StatusHistory' ++ version = 2 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'StatusHistoryPruneArgs': {'additionalProperties': False, ++ 'properties': {'max-history-mb': {'type': 'integer'}, ++ 'max-history-time': {'type': 'integer'}}, ++ 'required': ['max-history-time', ++ 'max-history-mb'], ++ 'type': 'object'}}, ++ 'properties': {'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'Prune': {'properties': {'Params': {'$ref': '#/definitions/StatusHistoryPruneArgs'}}, ++ 'type': 'object'}, ++ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StatusHistory', request='ModelConfig', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Prune(self, max_history_mb, max_history_time): ++ ''' ++ max_history_mb : int ++ max_history_time : int ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StatusHistory', request='Prune', version=2, params=_params) ++ _params['max-history-mb'] = max_history_mb ++ _params['max-history-time'] = max_history_time ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForModelConfigChanges(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StatusHistory', request='WatchForModelConfigChanges', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class SubnetsFacade(Type): ++ name = 'Subnets' ++ version = 2 ++ schema = {'definitions': {'AddSubnetParams': {'additionalProperties': False, ++ 'properties': {'provider-network-id': {'type': 'string'}, ++ 'space-tag': {'type': 'string'}, ++ 'subnet-provider-id': {'type': 'string'}, ++ 'subnet-tag': {'type': 'string'}, ++ 'vlan-tag': {'type': 'integer'}, ++ 'zones': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['space-tag'], ++ 'type': 'object'}, ++ 'AddSubnetsParams': {'additionalProperties': False, ++ 'properties': {'subnets': {'items': {'$ref': '#/definitions/AddSubnetParams'}, ++ 'type': 'array'}}, ++ 'required': ['subnets'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ListSubnetsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/Subnet'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'SpaceResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'SpaceResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SpaceResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Subnet': {'additionalProperties': False, ++ 'properties': {'cidr': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-network-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'space-tag': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'vlan-tag': {'type': 'integer'}, ++ 'zones': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['cidr', ++ 'vlan-tag', ++ 'life', ++ 'space-tag', ++ 'zones'], ++ 'type': 'object'}, ++ 'SubnetsFilters': {'additionalProperties': False, ++ 'properties': {'space-tag': {'type': 'string'}, ++ 'zone': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ZoneResult': {'additionalProperties': False, ++ 'properties': {'available': {'type': 'boolean'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}}, ++ 'required': ['name', 'available'], ++ 'type': 'object'}, ++ 'ZoneResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ZoneResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'AddSubnets': {'properties': {'Params': {'$ref': '#/definitions/AddSubnetsParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'AllSpaces': {'properties': {'Result': {'$ref': '#/definitions/SpaceResults'}}, ++ 'type': 'object'}, ++ 'AllZones': {'properties': {'Result': {'$ref': '#/definitions/ZoneResults'}}, ++ 'type': 'object'}, ++ 'ListSubnets': {'properties': {'Params': {'$ref': '#/definitions/SubnetsFilters'}, ++ 'Result': {'$ref': '#/definitions/ListSubnetsResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddSubnets(self, subnets): ++ ''' ++ subnets : typing.Sequence<+T_co>[~AddSubnetParams]<~AddSubnetParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Subnets', request='AddSubnets', version=2, params=_params) ++ _params['subnets'] = subnets ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SpaceResults) ++ async def AllSpaces(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~SpaceResult]<~SpaceResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Subnets', request='AllSpaces', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ZoneResults) ++ async def AllZones(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~ZoneResult]<~ZoneResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Subnets', request='AllZones', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ListSubnetsResults) ++ async def ListSubnets(self, space_tag, zone): ++ ''' ++ space_tag : str ++ zone : str ++ Returns -> typing.Sequence<+T_co>[~Subnet]<~Subnet> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Subnets', request='ListSubnets', version=2, params=_params) ++ _params['space-tag'] = space_tag ++ _params['zone'] = zone ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class VolumeAttachmentsWatcherFacade(Type): ++ name = 'VolumeAttachmentsWatcher' ++ version = 2 ++ schema = {'definitions': {'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineStorageId': {'additionalProperties': False, ++ 'properties': {'attachment-tag': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}}, ++ 'required': ['machine-tag', ++ 'attachment-tag'], ++ 'type': 'object'}, ++ 'MachineStorageIdsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/MachineStorageId'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id', ++ 'changes'], ++ 'type': 'object'}}, ++ 'properties': {'Next': {'properties': {'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResult'}}, ++ 'type': 'object'}, ++ 'Stop': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(MachineStorageIdsWatchResult) ++ async def Next(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId>, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='VolumeAttachmentsWatcher', request='Next', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Stop(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='VolumeAttachmentsWatcher', request='Stop', version=2, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ diff --cc modules/libjuju/juju/client/_client3.py index 0000000,0000000..3f9ef55 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/_client3.py @@@ -1,0 -1,0 +1,5220 @@@ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++from juju.client.facade import Type, ReturnMapping ++from juju.client._definitions import * ++ ++ ++class ApplicationFacade(Type): ++ name = 'Application' ++ version = 3 ++ schema = {'definitions': {'AddApplicationUnits': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'num-units', ++ 'placement'], ++ 'type': 'object'}, ++ 'AddApplicationUnitsResults': {'additionalProperties': False, ++ 'properties': {'units': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['units'], ++ 'type': 'object'}, ++ 'AddRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'AddRelationResults': {'additionalProperties': False, ++ 'properties': {'endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}}, ++ 'type': 'object'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelations': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelationsResults': {'additionalProperties': False, ++ 'properties': {'charm-relations': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['charm-relations'], ++ 'type': 'object'}, ++ 'ApplicationDeploy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-yaml': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}, ++ 'resources': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'series': {'type': 'string'}, ++ 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'series', ++ 'charm-url', ++ 'channel', ++ 'num-units', ++ 'config-yaml', ++ 'constraints'], ++ 'type': 'object'}, ++ 'ApplicationDestroy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationExpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGetResults': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm', ++ 'config', ++ 'constraints', ++ 'series'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredential': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'metrics-credentials': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'metrics-credentials'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredentials': {'additionalProperties': False, ++ 'properties': {'creds': {'items': {'$ref': '#/definitions/ApplicationMetricCredential'}, ++ 'type': 'array'}}, ++ 'required': ['creds'], ++ 'type': 'object'}, ++ 'ApplicationSet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationSetCharm': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config-settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-settings-yaml': {'type': 'string'}, ++ 'force-series': {'type': 'boolean'}, ++ 'force-units': {'type': 'boolean'}, ++ 'resource-ids': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'storage-constraints': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageConstraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'channel', ++ 'force-units', ++ 'force-series'], ++ 'type': 'object'}, ++ 'ApplicationUnexpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationUnset': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationUpdate': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'force-charm-url': {'type': 'boolean'}, ++ 'force-series': {'type': 'boolean'}, ++ 'min-units': {'type': 'integer'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'settings-yaml': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'force-charm-url', ++ 'force-series', ++ 'settings-yaml'], ++ 'type': 'object'}, ++ 'ApplicationsDeploy': {'additionalProperties': False, ++ 'properties': {'applications': {'items': {'$ref': '#/definitions/ApplicationDeploy'}, ++ 'type': 'array'}}, ++ 'required': ['applications'], ++ 'type': 'object'}, ++ 'CharmRelation': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'optional': {'type': 'boolean'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'optional', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'Constraints': {'additionalProperties': False, ++ 'properties': {'Count': {'type': 'integer'}, ++ 'Pool': {'type': 'string'}, ++ 'Size': {'type': 'integer'}}, ++ 'required': ['Pool', 'Size', 'Count'], ++ 'type': 'object'}, ++ 'DestroyApplicationUnits': {'additionalProperties': False, ++ 'properties': {'unit-names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['unit-names'], ++ 'type': 'object'}, ++ 'DestroyRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetApplicationConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'GetConstraintsResults': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Placement': {'additionalProperties': False, ++ 'properties': {'directive': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['scope', 'directive'], ++ 'type': 'object'}, ++ 'SetConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['application', 'constraints'], ++ 'type': 'object'}, ++ 'StorageConstraints': {'additionalProperties': False, ++ 'properties': {'count': {'type': 'integer'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'}, ++ 'Result': {'$ref': '#/definitions/AddRelationResults'}}, ++ 'type': 'object'}, ++ 'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationUnits'}, ++ 'Result': {'$ref': '#/definitions/AddApplicationUnitsResults'}}, ++ 'type': 'object'}, ++ 'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ApplicationCharmRelations'}, ++ 'Result': {'$ref': '#/definitions/ApplicationCharmRelationsResults'}}, ++ 'type': 'object'}, ++ 'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationsDeploy'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationDestroy'}}, ++ 'type': 'object'}, ++ 'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}}, ++ 'type': 'object'}, ++ 'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationUnits'}}, ++ 'type': 'object'}, ++ 'Expose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationExpose'}}, ++ 'type': 'object'}, ++ 'Get': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/ApplicationGetResults'}}, ++ 'type': 'object'}, ++ 'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/GetApplicationConstraints'}, ++ 'Result': {'$ref': '#/definitions/GetConstraintsResults'}}, ++ 'type': 'object'}, ++ 'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}}, ++ 'type': 'object'}, ++ 'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}}, ++ 'type': 'object'}, ++ 'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}}, ++ 'type': 'object'}, ++ 'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}}, ++ 'type': 'object'}, ++ 'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}}, ++ 'type': 'object'}, ++ 'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddRelationResults) ++ async def AddRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddRelation', version=3, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AddApplicationUnitsResults) ++ async def AddUnits(self, application, num_units, placement): ++ ''' ++ application : str ++ num_units : int ++ placement : typing.Sequence<+T_co>[~Placement]<~Placement> ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddUnits', version=3, params=_params) ++ _params['application'] = application ++ _params['num-units'] = num_units ++ _params['placement'] = placement ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationCharmRelationsResults) ++ async def CharmRelations(self, application): ++ ''' ++ application : str ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='CharmRelations', version=3, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Deploy(self, applications): ++ ''' ++ applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Deploy', version=3, params=_params) ++ _params['applications'] = applications ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Destroy(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Destroy', version=3, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyRelation', version=3, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyUnits(self, unit_names): ++ ''' ++ unit_names : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyUnits', version=3, params=_params) ++ _params['unit-names'] = unit_names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Expose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Expose', version=3, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationGetResults) ++ async def Get(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Get', version=3, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def GetCharmURL(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetCharmURL', version=3, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(GetConstraintsResults) ++ async def GetConstraints(self, application): ++ ''' ++ application : str ++ Returns -> Value ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetConstraints', version=3, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Set(self, application, options): ++ ''' ++ application : str ++ options : typing.Mapping<~KT, +VT_co>[str, str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Set', version=3, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetCharm(self, application, channel, charm_url, config_settings, config_settings_yaml, force_series, force_units, resource_ids, storage_constraints): ++ ''' ++ application : str ++ channel : str ++ charm_url : str ++ config_settings : typing.Mapping<~KT, +VT_co>[str, str] ++ config_settings_yaml : str ++ force_series : bool ++ force_units : bool ++ resource_ids : typing.Mapping<~KT, +VT_co>[str, str] ++ storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints> ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetCharm', version=3, params=_params) ++ _params['application'] = application ++ _params['channel'] = channel ++ _params['charm-url'] = charm_url ++ _params['config-settings'] = config_settings ++ _params['config-settings-yaml'] = config_settings_yaml ++ _params['force-series'] = force_series ++ _params['force-units'] = force_units ++ _params['resource-ids'] = resource_ids ++ _params['storage-constraints'] = storage_constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetConstraints(self, application, constraints): ++ ''' ++ application : str ++ constraints : Value ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetConstraints', version=3, params=_params) ++ _params['application'] = application ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetMetricCredentials(self, creds): ++ ''' ++ creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetMetricCredentials', version=3, params=_params) ++ _params['creds'] = creds ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unexpose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unexpose', version=3, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unset(self, application, options): ++ ''' ++ application : str ++ options : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unset', version=3, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Update(self, application, charm_url, constraints, force_charm_url, force_series, min_units, settings, settings_yaml): ++ ''' ++ application : str ++ charm_url : str ++ constraints : Value ++ force_charm_url : bool ++ force_series : bool ++ min_units : int ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ settings_yaml : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Update', version=3, params=_params) ++ _params['application'] = application ++ _params['charm-url'] = charm_url ++ _params['constraints'] = constraints ++ _params['force-charm-url'] = force_charm_url ++ _params['force-series'] = force_series ++ _params['min-units'] = min_units ++ _params['settings'] = settings ++ _params['settings-yaml'] = settings_yaml ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ControllerFacade(Type): ++ name = 'Controller' ++ version = 3 ++ schema = {'definitions': {'AllWatcherId': {'additionalProperties': False, ++ 'properties': {'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'CloudCredential': {'additionalProperties': False, ++ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'auth-type': {'type': 'string'}, ++ 'redacted': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['auth-type'], ++ 'type': 'object'}, ++ 'CloudSpec': {'additionalProperties': False, ++ 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'}, ++ 'endpoint': {'type': 'string'}, ++ 'identity-endpoint': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'region': {'type': 'string'}, ++ 'storage-endpoint': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['type', 'name'], ++ 'type': 'object'}, ++ 'CloudSpecResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/CloudSpec'}}, ++ 'type': 'object'}, ++ 'CloudSpecResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudSpecResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ConfigValue': {'additionalProperties': False, ++ 'properties': {'source': {'type': 'string'}, ++ 'value': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'required': ['value', 'source'], ++ 'type': 'object'}, ++ 'ControllerConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'DestroyControllerArgs': {'additionalProperties': False, ++ 'properties': {'destroy-models': {'type': 'boolean'}}, ++ 'required': ['destroy-models'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'HostedModelConfig': {'additionalProperties': False, ++ 'properties': {'cloud-spec': {'$ref': '#/definitions/CloudSpec'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}, ++ 'owner': {'type': 'string'}}, ++ 'required': ['name', 'owner'], ++ 'type': 'object'}, ++ 'HostedModelConfigsResults': {'additionalProperties': False, ++ 'properties': {'models': {'items': {'$ref': '#/definitions/HostedModelConfig'}, ++ 'type': 'array'}}, ++ 'required': ['models'], ++ 'type': 'object'}, ++ 'InitiateMigrationArgs': {'additionalProperties': False, ++ 'properties': {'specs': {'items': {'$ref': '#/definitions/MigrationSpec'}, ++ 'type': 'array'}}, ++ 'required': ['specs'], ++ 'type': 'object'}, ++ 'InitiateMigrationResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'migration-id': {'type': 'string'}, ++ 'model-tag': {'type': 'string'}}, ++ 'required': ['model-tag', ++ 'migration-id'], ++ 'type': 'object'}, ++ 'InitiateMigrationResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/InitiateMigrationResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineHardware': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'MigrationSpec': {'additionalProperties': False, ++ 'properties': {'model-tag': {'type': 'string'}, ++ 'target-info': {'$ref': '#/definitions/MigrationTargetInfo'}}, ++ 'required': ['model-tag', 'target-info'], ++ 'type': 'object'}, ++ 'MigrationTargetInfo': {'additionalProperties': False, ++ 'properties': {'addrs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'auth-tag': {'type': 'string'}, ++ 'ca-cert': {'type': 'string'}, ++ 'controller-tag': {'type': 'string'}, ++ 'macaroons': {'type': 'string'}, ++ 'password': {'type': 'string'}}, ++ 'required': ['controller-tag', ++ 'addrs', ++ 'ca-cert', ++ 'auth-tag'], ++ 'type': 'object'}, ++ 'Model': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', 'uuid', 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelBlockInfo': {'additionalProperties': False, ++ 'properties': {'blocks': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'model-uuid': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}}, ++ 'required': ['name', ++ 'model-uuid', ++ 'owner-tag', ++ 'blocks'], ++ 'type': 'object'}, ++ 'ModelBlockInfoList': {'additionalProperties': False, ++ 'properties': {'models': {'items': {'$ref': '#/definitions/ModelBlockInfo'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ModelConfigResults': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ConfigValue'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelMachineInfo': {'additionalProperties': False, ++ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'}, ++ 'has-vote': {'type': 'boolean'}, ++ 'id': {'type': 'string'}, ++ 'instance-id': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'wants-vote': {'type': 'boolean'}}, ++ 'required': ['id'], ++ 'type': 'object'}, ++ 'ModelStatus': {'additionalProperties': False, ++ 'properties': {'application-count': {'type': 'integer'}, ++ 'hosted-machine-count': {'type': 'integer'}, ++ 'life': {'type': 'string'}, ++ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'}, ++ 'type': 'array'}, ++ 'model-tag': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}}, ++ 'required': ['model-tag', ++ 'life', ++ 'hosted-machine-count', ++ 'application-count', ++ 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelStatusResults': {'additionalProperties': False, ++ 'properties': {'models': {'items': {'$ref': '#/definitions/ModelStatus'}, ++ 'type': 'array'}}, ++ 'required': ['models'], ++ 'type': 'object'}, ++ 'ModelTag': {'additionalProperties': False, 'type': 'object'}, ++ 'ModifyControllerAccess': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'action': {'type': 'string'}, ++ 'user-tag': {'type': 'string'}}, ++ 'required': ['user-tag', ++ 'action', ++ 'access'], ++ 'type': 'object'}, ++ 'ModifyControllerAccessRequest': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyControllerAccess'}, ++ 'type': 'array'}}, ++ 'required': ['changes'], ++ 'type': 'object'}, ++ 'RemoveBlocksArgs': {'additionalProperties': False, ++ 'properties': {'all': {'type': 'boolean'}}, ++ 'required': ['all'], ++ 'type': 'object'}, ++ 'UserAccess': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'user-tag': {'type': 'string'}}, ++ 'required': ['user-tag', 'access'], ++ 'type': 'object'}, ++ 'UserAccessResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/UserAccess'}}, ++ 'type': 'object'}, ++ 'UserAccessResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/UserAccessResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'UserModel': {'additionalProperties': False, ++ 'properties': {'last-connection': {'format': 'date-time', ++ 'type': 'string'}, ++ 'model': {'$ref': '#/definitions/Model'}}, ++ 'required': ['model', 'last-connection'], ++ 'type': 'object'}, ++ 'UserModelList': {'additionalProperties': False, ++ 'properties': {'user-models': {'items': {'$ref': '#/definitions/UserModel'}, ++ 'type': 'array'}}, ++ 'required': ['user-models'], ++ 'type': 'object'}}, ++ 'properties': {'AllModels': {'properties': {'Result': {'$ref': '#/definitions/UserModelList'}}, ++ 'type': 'object'}, ++ 'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/CloudSpecResults'}}, ++ 'type': 'object'}, ++ 'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}}, ++ 'type': 'object'}, ++ 'DestroyController': {'properties': {'Params': {'$ref': '#/definitions/DestroyControllerArgs'}}, ++ 'type': 'object'}, ++ 'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'}, ++ 'Result': {'$ref': '#/definitions/CloudSpecResult'}}, ++ 'type': 'object'}, ++ 'GetControllerAccess': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/UserAccessResults'}}, ++ 'type': 'object'}, ++ 'HostedModelConfigs': {'properties': {'Result': {'$ref': '#/definitions/HostedModelConfigsResults'}}, ++ 'type': 'object'}, ++ 'InitiateMigration': {'properties': {'Params': {'$ref': '#/definitions/InitiateMigrationArgs'}, ++ 'Result': {'$ref': '#/definitions/InitiateMigrationResults'}}, ++ 'type': 'object'}, ++ 'ListBlockedModels': {'properties': {'Result': {'$ref': '#/definitions/ModelBlockInfoList'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResults'}}, ++ 'type': 'object'}, ++ 'ModelStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ModelStatusResults'}}, ++ 'type': 'object'}, ++ 'ModifyControllerAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyControllerAccessRequest'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'RemoveBlocks': {'properties': {'Params': {'$ref': '#/definitions/RemoveBlocksArgs'}}, ++ 'type': 'object'}, ++ 'WatchAllModels': {'properties': {'Result': {'$ref': '#/definitions/AllWatcherId'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(UserModelList) ++ async def AllModels(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~UserModel]<~UserModel> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='AllModels', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CloudSpecResults) ++ async def CloudSpec(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='CloudSpec', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ControllerConfigResult) ++ async def ControllerConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='ControllerConfig', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyController(self, destroy_models): ++ ''' ++ destroy_models : bool ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='DestroyController', version=3, params=_params) ++ _params['destroy-models'] = destroy_models ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CloudSpecResult) ++ async def GetCloudSpec(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='GetCloudSpec', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(UserAccessResults) ++ async def GetControllerAccess(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~UserAccessResult]<~UserAccessResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='GetControllerAccess', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(HostedModelConfigsResults) ++ async def HostedModelConfigs(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~HostedModelConfig]<~HostedModelConfig> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='HostedModelConfigs', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(InitiateMigrationResults) ++ async def InitiateMigration(self, specs): ++ ''' ++ specs : typing.Sequence<+T_co>[~MigrationSpec]<~MigrationSpec> ++ Returns -> typing.Sequence<+T_co>[~InitiateMigrationResult]<~InitiateMigrationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='InitiateMigration', version=3, params=_params) ++ _params['specs'] = specs ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelBlockInfoList) ++ async def ListBlockedModels(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~ModelBlockInfo]<~ModelBlockInfo> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='ListBlockedModels', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResults) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='ModelConfig', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelStatusResults) ++ async def ModelStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='ModelStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ModifyControllerAccess(self, changes): ++ ''' ++ changes : typing.Sequence<+T_co>[~ModifyControllerAccess]<~ModifyControllerAccess> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='ModifyControllerAccess', version=3, params=_params) ++ _params['changes'] = changes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def RemoveBlocks(self, all_): ++ ''' ++ all_ : bool ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='RemoveBlocks', version=3, params=_params) ++ _params['all'] = all_ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AllWatcherId) ++ async def WatchAllModels(self): ++ ''' ++ ++ Returns -> str ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Controller', request='WatchAllModels', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class FirewallerFacade(Type): ++ name = 'Firewaller' ++ version = 3 ++ schema = {'definitions': {'BoolResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'boolean'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'BoolResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/BoolResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'CloudCredential': {'additionalProperties': False, ++ 'properties': {'attrs': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'auth-type': {'type': 'string'}, ++ 'redacted': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['auth-type'], ++ 'type': 'object'}, ++ 'CloudSpec': {'additionalProperties': False, ++ 'properties': {'credential': {'$ref': '#/definitions/CloudCredential'}, ++ 'endpoint': {'type': 'string'}, ++ 'identity-endpoint': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'region': {'type': 'string'}, ++ 'storage-endpoint': {'type': 'string'}, ++ 'type': {'type': 'string'}}, ++ 'required': ['type', 'name'], ++ 'type': 'object'}, ++ 'CloudSpecResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/CloudSpec'}}, ++ 'type': 'object'}, ++ 'CloudSpecResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/CloudSpecResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachinePortRange': {'additionalProperties': False, ++ 'properties': {'port-range': {'$ref': '#/definitions/PortRange'}, ++ 'relation-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['unit-tag', ++ 'relation-tag', ++ 'port-range'], ++ 'type': 'object'}, ++ 'MachinePorts': {'additionalProperties': False, ++ 'properties': {'machine-tag': {'type': 'string'}, ++ 'subnet-tag': {'type': 'string'}}, ++ 'required': ['machine-tag', 'subnet-tag'], ++ 'type': 'object'}, ++ 'MachinePortsParams': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/MachinePorts'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'MachinePortsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'ports': {'items': {'$ref': '#/definitions/MachinePortRange'}, ++ 'type': 'array'}}, ++ 'required': ['ports'], ++ 'type': 'object'}, ++ 'MachinePortsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MachinePortsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelTag': {'additionalProperties': False, 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'PortRange': {'additionalProperties': False, ++ 'properties': {'from-port': {'type': 'integer'}, ++ 'protocol': {'type': 'string'}, ++ 'to-port': {'type': 'integer'}}, ++ 'required': ['from-port', 'to-port', 'protocol'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'StringsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}}, ++ 'properties': {'CloudSpec': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/CloudSpecResults'}}, ++ 'type': 'object'}, ++ 'GetAssignedMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'GetCloudSpec': {'properties': {'Params': {'$ref': '#/definitions/ModelTag'}, ++ 'Result': {'$ref': '#/definitions/CloudSpecResult'}}, ++ 'type': 'object'}, ++ 'GetExposed': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/BoolResults'}}, ++ 'type': 'object'}, ++ 'GetMachineActiveSubnets': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsResults'}}, ++ 'type': 'object'}, ++ 'GetMachinePorts': {'properties': {'Params': {'$ref': '#/definitions/MachinePortsParams'}, ++ 'Result': {'$ref': '#/definitions/MachinePortsResults'}}, ++ 'type': 'object'}, ++ 'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchModelMachines': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchOpenedPorts': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchUnits': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(CloudSpecResults) ++ async def CloudSpec(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='CloudSpec', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def GetAssignedMachine(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='GetAssignedMachine', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(CloudSpecResult) ++ async def GetCloudSpec(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), _ForwardRef('CloudSpec')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='GetCloudSpec', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BoolResults) ++ async def GetExposed(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='GetExposed', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsResults) ++ async def GetMachineActiveSubnets(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='GetMachineActiveSubnets', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachinePortsResults) ++ async def GetMachinePorts(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~MachinePorts]<~MachinePorts> ++ Returns -> typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='GetMachinePorts', version=3, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def InstanceId(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='InstanceId', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='Life', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='ModelConfig', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def Watch(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='Watch', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForModelConfigChanges(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='WatchForModelConfigChanges', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResult) ++ async def WatchModelMachines(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='WatchModelMachines', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchOpenedPorts(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='WatchOpenedPorts', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchUnits(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Firewaller', request='WatchUnits', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class InstancePollerFacade(Type): ++ name = 'InstancePoller' ++ version = 3 ++ schema = {'definitions': {'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'BoolResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'boolean'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'BoolResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/BoolResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineAddresses': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'}, ++ 'type': 'array'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'addresses'], ++ 'type': 'object'}, ++ 'MachineAddressesResult': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['addresses'], ++ 'type': 'object'}, ++ 'MachineAddressesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MachineAddressesResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'SetMachinesAddresses': {'additionalProperties': False, ++ 'properties': {'machine-addresses': {'items': {'$ref': '#/definitions/MachineAddresses'}, ++ 'type': 'array'}}, ++ 'required': ['machine-addresses'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'StatusResult': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'id': {'type': 'string'}, ++ 'info': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['id', ++ 'life', ++ 'status', ++ 'info', ++ 'data', ++ 'since'], ++ 'type': 'object'}, ++ 'StatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}}, ++ 'properties': {'AreManuallyProvisioned': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/BoolResults'}}, ++ 'type': 'object'}, ++ 'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'InstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StatusResults'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'ProviderAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MachineAddressesResults'}}, ++ 'type': 'object'}, ++ 'SetInstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetProviderAddresses': {'properties': {'Params': {'$ref': '#/definitions/SetMachinesAddresses'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Status': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StatusResults'}}, ++ 'type': 'object'}, ++ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchModelMachines': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(BoolResults) ++ async def AreManuallyProvisioned(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='AreManuallyProvisioned', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def InstanceId(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='InstanceId', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusResults) ++ async def InstanceStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='InstanceStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='Life', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='ModelConfig', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachineAddressesResults) ++ async def ProviderAddresses(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MachineAddressesResult]<~MachineAddressesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='ProviderAddresses', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetInstanceStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='SetInstanceStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetProviderAddresses(self, machine_addresses): ++ ''' ++ machine_addresses : typing.Sequence<+T_co>[~MachineAddresses]<~MachineAddresses> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='SetProviderAddresses', version=3, params=_params) ++ _params['machine-addresses'] = machine_addresses ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusResults) ++ async def Status(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='Status', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForModelConfigChanges(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='WatchForModelConfigChanges', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResult) ++ async def WatchModelMachines(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='InstancePoller', request='WatchModelMachines', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class MachineManagerFacade(Type): ++ name = 'MachineManager' ++ version = 3 ++ schema = {'definitions': {'AddMachineParams': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'$ref': '#/definitions/Address'}, ++ 'type': 'array'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'container-type': {'type': 'string'}, ++ 'disks': {'items': {'$ref': '#/definitions/Constraints'}, ++ 'type': 'array'}, ++ 'hardware-characteristics': {'$ref': '#/definitions/HardwareCharacteristics'}, ++ 'instance-id': {'type': 'string'}, ++ 'jobs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'nonce': {'type': 'string'}, ++ 'parent-id': {'type': 'string'}, ++ 'placement': {'$ref': '#/definitions/Placement'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['series', ++ 'constraints', ++ 'jobs', ++ 'parent-id', ++ 'container-type', ++ 'instance-id', ++ 'nonce', ++ 'hardware-characteristics', ++ 'addresses'], ++ 'type': 'object'}, ++ 'AddMachines': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/AddMachineParams'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'AddMachinesResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'machine': {'type': 'string'}}, ++ 'required': ['machine'], ++ 'type': 'object'}, ++ 'AddMachinesResults': {'additionalProperties': False, ++ 'properties': {'machines': {'items': {'$ref': '#/definitions/AddMachinesResult'}, ++ 'type': 'array'}}, ++ 'required': ['machines'], ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'Constraints': {'additionalProperties': False, ++ 'properties': {'Count': {'type': 'integer'}, ++ 'Pool': {'type': 'string'}, ++ 'Size': {'type': 'integer'}}, ++ 'required': ['Pool', 'Size', 'Count'], ++ 'type': 'object'}, ++ 'DestroyMachineInfo': {'additionalProperties': False, ++ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'destroyed-units': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyMachineResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'$ref': '#/definitions/DestroyMachineInfo'}}, ++ 'type': 'object'}, ++ 'DestroyMachineResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyMachineResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'HardwareCharacteristics': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cpu-cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'InstanceType': {'additionalProperties': False, ++ 'properties': {'arches': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'cost': {'type': 'integer'}, ++ 'cpu-cores': {'type': 'integer'}, ++ 'deprecated': {'type': 'boolean'}, ++ 'memory': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'root-disk': {'type': 'integer'}, ++ 'virt-type': {'type': 'string'}}, ++ 'required': ['arches', 'cpu-cores', 'memory'], ++ 'type': 'object'}, ++ 'InstanceTypesResult': {'additionalProperties': False, ++ 'properties': {'cost-currency': {'type': 'string'}, ++ 'cost-divisor': {'type': 'integer'}, ++ 'cost-unit': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'instance-types': {'items': {'$ref': '#/definitions/InstanceType'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'InstanceTypesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/InstanceTypesResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'ModelInstanceTypesConstraint': {'additionalProperties': False, ++ 'properties': {'value': {'$ref': '#/definitions/Value'}}, ++ 'type': 'object'}, ++ 'ModelInstanceTypesConstraints': {'additionalProperties': False, ++ 'properties': {'constraints': {'items': {'$ref': '#/definitions/ModelInstanceTypesConstraint'}, ++ 'type': 'array'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'Placement': {'additionalProperties': False, ++ 'properties': {'directive': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['scope', 'directive'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'AddMachines': {'properties': {'Params': {'$ref': '#/definitions/AddMachines'}, ++ 'Result': {'$ref': '#/definitions/AddMachinesResults'}}, ++ 'type': 'object'}, ++ 'DestroyMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/DestroyMachineResults'}}, ++ 'type': 'object'}, ++ 'ForceDestroyMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/DestroyMachineResults'}}, ++ 'type': 'object'}, ++ 'InstanceTypes': {'properties': {'Params': {'$ref': '#/definitions/ModelInstanceTypesConstraints'}, ++ 'Result': {'$ref': '#/definitions/InstanceTypesResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddMachinesResults) ++ async def AddMachines(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams> ++ Returns -> typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineManager', request='AddMachines', version=3, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DestroyMachineResults) ++ async def DestroyMachine(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~DestroyMachineResult]<~DestroyMachineResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineManager', request='DestroyMachine', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DestroyMachineResults) ++ async def ForceDestroyMachine(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~DestroyMachineResult]<~DestroyMachineResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineManager', request='ForceDestroyMachine', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(InstanceTypesResults) ++ async def InstanceTypes(self, constraints): ++ ''' ++ constraints : typing.Sequence<+T_co>[~ModelInstanceTypesConstraint]<~ModelInstanceTypesConstraint> ++ Returns -> typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='MachineManager', request='InstanceTypes', version=3, params=_params) ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ModelManagerFacade(Type): ++ name = 'ModelManager' ++ version = 3 ++ schema = {'definitions': {'DumpModelRequest': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'simplified': {'type': 'boolean'}}, ++ 'required': ['entities', 'simplified'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatus': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['status', 'info', 'since'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineHardware': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'MapResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'MapResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MapResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Model': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', 'uuid', 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelCreateArgs': {'additionalProperties': False, ++ 'properties': {'cloud-tag': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'credential': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'region': {'type': 'string'}}, ++ 'required': ['name', 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelDefaultValues': {'additionalProperties': False, ++ 'properties': {'cloud-region': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelDefaults': {'additionalProperties': False, ++ 'properties': {'controller': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'default': {'additionalProperties': True, ++ 'type': 'object'}, ++ 'regions': {'items': {'$ref': '#/definitions/RegionDefaults'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ModelDefaultsResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'$ref': '#/definitions/ModelDefaults'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelInfo': {'additionalProperties': False, ++ 'properties': {'agent-version': {'$ref': '#/definitions/Number'}, ++ 'cloud-credential-tag': {'type': 'string'}, ++ 'cloud-region': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'controller-uuid': {'type': 'string'}, ++ 'default-series': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'}, ++ 'type': 'array'}, ++ 'migration': {'$ref': '#/definitions/ModelMigrationStatus'}, ++ 'name': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'provider-type': {'type': 'string'}, ++ 'sla': {'$ref': '#/definitions/ModelSLAInfo'}, ++ 'status': {'$ref': '#/definitions/EntityStatus'}, ++ 'users': {'items': {'$ref': '#/definitions/ModelUserInfo'}, ++ 'type': 'array'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', ++ 'uuid', ++ 'controller-uuid', ++ 'cloud-tag', ++ 'owner-tag', ++ 'life', ++ 'users', ++ 'machines', ++ 'sla', ++ 'agent-version'], ++ 'type': 'object'}, ++ 'ModelInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/ModelInfo'}}, ++ 'type': 'object'}, ++ 'ModelInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ModelInfoResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ModelMachineInfo': {'additionalProperties': False, ++ 'properties': {'hardware': {'$ref': '#/definitions/MachineHardware'}, ++ 'has-vote': {'type': 'boolean'}, ++ 'id': {'type': 'string'}, ++ 'instance-id': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'wants-vote': {'type': 'boolean'}}, ++ 'required': ['id'], ++ 'type': 'object'}, ++ 'ModelMigrationStatus': {'additionalProperties': False, ++ 'properties': {'end': {'format': 'date-time', ++ 'type': 'string'}, ++ 'start': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['status', 'start'], ++ 'type': 'object'}, ++ 'ModelSLAInfo': {'additionalProperties': False, ++ 'properties': {'level': {'type': 'string'}, ++ 'owner': {'type': 'string'}}, ++ 'required': ['level', 'owner'], ++ 'type': 'object'}, ++ 'ModelStatus': {'additionalProperties': False, ++ 'properties': {'application-count': {'type': 'integer'}, ++ 'hosted-machine-count': {'type': 'integer'}, ++ 'life': {'type': 'string'}, ++ 'machines': {'items': {'$ref': '#/definitions/ModelMachineInfo'}, ++ 'type': 'array'}, ++ 'model-tag': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}}, ++ 'required': ['model-tag', ++ 'life', ++ 'hosted-machine-count', ++ 'application-count', ++ 'owner-tag'], ++ 'type': 'object'}, ++ 'ModelStatusResults': {'additionalProperties': False, ++ 'properties': {'models': {'items': {'$ref': '#/definitions/ModelStatus'}, ++ 'type': 'array'}}, ++ 'required': ['models'], ++ 'type': 'object'}, ++ 'ModelUnsetKeys': {'additionalProperties': False, ++ 'properties': {'cloud-region': {'type': 'string'}, ++ 'cloud-tag': {'type': 'string'}, ++ 'keys': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['keys'], ++ 'type': 'object'}, ++ 'ModelUserInfo': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'display-name': {'type': 'string'}, ++ 'last-connection': {'format': 'date-time', ++ 'type': 'string'}, ++ 'user': {'type': 'string'}}, ++ 'required': ['user', ++ 'display-name', ++ 'last-connection', ++ 'access'], ++ 'type': 'object'}, ++ 'ModifyModelAccess': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'action': {'type': 'string'}, ++ 'model-tag': {'type': 'string'}, ++ 'user-tag': {'type': 'string'}}, ++ 'required': ['user-tag', ++ 'action', ++ 'access', ++ 'model-tag'], ++ 'type': 'object'}, ++ 'ModifyModelAccessRequest': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/ModifyModelAccess'}, ++ 'type': 'array'}}, ++ 'required': ['changes'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'RegionDefaults': {'additionalProperties': False, ++ 'properties': {'region-name': {'type': 'string'}, ++ 'value': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'required': ['region-name', 'value'], ++ 'type': 'object'}, ++ 'SetModelDefaults': {'additionalProperties': False, ++ 'properties': {'config': {'items': {'$ref': '#/definitions/ModelDefaultValues'}, ++ 'type': 'array'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'UnsetModelDefaults': {'additionalProperties': False, ++ 'properties': {'keys': {'items': {'$ref': '#/definitions/ModelUnsetKeys'}, ++ 'type': 'array'}}, ++ 'required': ['keys'], ++ 'type': 'object'}, ++ 'UserModel': {'additionalProperties': False, ++ 'properties': {'last-connection': {'format': 'date-time', ++ 'type': 'string'}, ++ 'model': {'$ref': '#/definitions/Model'}}, ++ 'required': ['model', 'last-connection'], ++ 'type': 'object'}, ++ 'UserModelList': {'additionalProperties': False, ++ 'properties': {'user-models': {'items': {'$ref': '#/definitions/UserModel'}, ++ 'type': 'array'}}, ++ 'required': ['user-models'], ++ 'type': 'object'}}, ++ 'properties': {'CreateModel': {'properties': {'Params': {'$ref': '#/definitions/ModelCreateArgs'}, ++ 'Result': {'$ref': '#/definitions/ModelInfo'}}, ++ 'type': 'object'}, ++ 'DestroyModels': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'DumpModels': {'properties': {'Params': {'$ref': '#/definitions/DumpModelRequest'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'DumpModelsDB': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MapResults'}}, ++ 'type': 'object'}, ++ 'ListModels': {'properties': {'Params': {'$ref': '#/definitions/Entity'}, ++ 'Result': {'$ref': '#/definitions/UserModelList'}}, ++ 'type': 'object'}, ++ 'ModelDefaults': {'properties': {'Result': {'$ref': '#/definitions/ModelDefaultsResult'}}, ++ 'type': 'object'}, ++ 'ModelInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ModelInfoResults'}}, ++ 'type': 'object'}, ++ 'ModelStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ModelStatusResults'}}, ++ 'type': 'object'}, ++ 'ModifyModelAccess': {'properties': {'Params': {'$ref': '#/definitions/ModifyModelAccessRequest'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetModelDefaults': {'properties': {'Params': {'$ref': '#/definitions/SetModelDefaults'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UnsetModelDefaults': {'properties': {'Params': {'$ref': '#/definitions/UnsetModelDefaults'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ModelInfo) ++ async def CreateModel(self, cloud_tag, config, credential, name, owner_tag, region): ++ ''' ++ cloud_tag : str ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ credential : str ++ name : str ++ owner_tag : str ++ region : str ++ Returns -> typing.Union[_ForwardRef('Number'), _ForwardRef('ModelMigrationStatus'), _ForwardRef('ModelSLAInfo'), _ForwardRef('EntityStatus'), typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='CreateModel', version=3, params=_params) ++ _params['cloud-tag'] = cloud_tag ++ _params['config'] = config ++ _params['credential'] = credential ++ _params['name'] = name ++ _params['owner-tag'] = owner_tag ++ _params['region'] = region ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DestroyModels(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='DestroyModels', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def DumpModels(self, entities, simplified): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ simplified : bool ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='DumpModels', version=3, params=_params) ++ _params['entities'] = entities ++ _params['simplified'] = simplified ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MapResults) ++ async def DumpModelsDB(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MapResult]<~MapResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='DumpModelsDB', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(UserModelList) ++ async def ListModels(self, tag): ++ ''' ++ tag : str ++ Returns -> typing.Sequence<+T_co>[~UserModel]<~UserModel> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ListModels', version=3, params=_params) ++ _params['tag'] = tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelDefaultsResult) ++ async def ModelDefaults(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~ModelDefaults]<~ModelDefaults> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModelDefaults', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelInfoResults) ++ async def ModelInfo(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ModelInfoResult]<~ModelInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModelInfo', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelStatusResults) ++ async def ModelStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModelStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ModifyModelAccess(self, changes): ++ ''' ++ changes : typing.Sequence<+T_co>[~ModifyModelAccess]<~ModifyModelAccess> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='ModifyModelAccess', version=3, params=_params) ++ _params['changes'] = changes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetModelDefaults(self, config): ++ ''' ++ config : typing.Sequence<+T_co>[~ModelDefaultValues]<~ModelDefaultValues> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='SetModelDefaults', version=3, params=_params) ++ _params['config'] = config ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UnsetModelDefaults(self, keys): ++ ''' ++ keys : typing.Sequence<+T_co>[~ModelUnsetKeys]<~ModelUnsetKeys> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='ModelManager', request='UnsetModelDefaults', version=3, params=_params) ++ _params['keys'] = keys ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class ProvisionerFacade(Type): ++ name = 'Provisioner' ++ version = 3 ++ schema = {'definitions': {'APIHostPortsResult': {'additionalProperties': False, ++ 'properties': {'servers': {'items': {'items': {'$ref': '#/definitions/HostPort'}, ++ 'type': 'array'}, ++ 'type': 'array'}}, ++ 'required': ['servers'], ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'Binary': {'additionalProperties': False, ++ 'properties': {'Arch': {'type': 'string'}, ++ 'Number': {'$ref': '#/definitions/Number'}, ++ 'Series': {'type': 'string'}}, ++ 'required': ['Number', 'Series', 'Arch'], ++ 'type': 'object'}, ++ 'BytesResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'CloudImageMetadata': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'image-id': {'type': 'string'}, ++ 'priority': {'type': 'integer'}, ++ 'region': {'type': 'string'}, ++ 'root-storage-size': {'type': 'integer'}, ++ 'root-storage-type': {'type': 'string'}, ++ 'series': {'type': 'string'}, ++ 'source': {'type': 'string'}, ++ 'stream': {'type': 'string'}, ++ 'version': {'type': 'string'}, ++ 'virt-type': {'type': 'string'}}, ++ 'required': ['image-id', ++ 'region', ++ 'version', ++ 'series', ++ 'arch', ++ 'source', ++ 'priority'], ++ 'type': 'object'}, ++ 'ConstraintsResult': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'ConstraintsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ConstraintsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ContainerConfig': {'additionalProperties': False, ++ 'properties': {'UpdateBehavior': {'$ref': '#/definitions/UpdateBehavior'}, ++ 'apt-mirror': {'type': 'string'}, ++ 'apt-proxy': {'$ref': '#/definitions/Settings'}, ++ 'authorized-keys': {'type': 'string'}, ++ 'provider-type': {'type': 'string'}, ++ 'proxy': {'$ref': '#/definitions/Settings'}, ++ 'ssl-hostname-verification': {'type': 'boolean'}}, ++ 'required': ['provider-type', ++ 'authorized-keys', ++ 'ssl-hostname-verification', ++ 'proxy', ++ 'apt-proxy', ++ 'apt-mirror', ++ 'UpdateBehavior'], ++ 'type': 'object'}, ++ 'ContainerManagerConfig': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ContainerManagerConfigParams': {'additionalProperties': False, ++ 'properties': {'type': {'type': 'string'}}, ++ 'required': ['type'], ++ 'type': 'object'}, ++ 'ControllerConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'DeviceBridgeInfo': {'additionalProperties': False, ++ 'properties': {'bridge-name': {'type': 'string'}, ++ 'host-device-name': {'type': 'string'}}, ++ 'required': ['host-device-name', ++ 'bridge-name'], ++ 'type': 'object'}, ++ 'DistributionGroupResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'DistributionGroupResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/DistributionGroupResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityPassword': {'additionalProperties': False, ++ 'properties': {'password': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'password'], ++ 'type': 'object'}, ++ 'EntityPasswords': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/EntityPassword'}, ++ 'type': 'array'}}, ++ 'required': ['changes'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'FindToolsParams': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'major': {'type': 'integer'}, ++ 'minor': {'type': 'integer'}, ++ 'number': {'$ref': '#/definitions/Number'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['number', ++ 'major', ++ 'minor', ++ 'arch', ++ 'series'], ++ 'type': 'object'}, ++ 'FindToolsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'list': {'items': {'$ref': '#/definitions/Tools'}, ++ 'type': 'array'}}, ++ 'required': ['list'], ++ 'type': 'object'}, ++ 'HardwareCharacteristics': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'availability-zone': {'type': 'string'}, ++ 'cpu-cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'HostNetworkChange': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'new-bridges': {'items': {'$ref': '#/definitions/DeviceBridgeInfo'}, ++ 'type': 'array'}, ++ 'reconfigure-delay': {'type': 'integer'}}, ++ 'required': ['new-bridges', ++ 'reconfigure-delay'], ++ 'type': 'object'}, ++ 'HostNetworkChangeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/HostNetworkChange'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'HostPort': {'additionalProperties': False, ++ 'properties': {'Address': {'$ref': '#/definitions/Address'}, ++ 'port': {'type': 'integer'}}, ++ 'required': ['Address', 'port'], ++ 'type': 'object'}, ++ 'InstanceInfo': {'additionalProperties': False, ++ 'properties': {'characteristics': {'$ref': '#/definitions/HardwareCharacteristics'}, ++ 'instance-id': {'type': 'string'}, ++ 'network-config': {'items': {'$ref': '#/definitions/NetworkConfig'}, ++ 'type': 'array'}, ++ 'nonce': {'type': 'string'}, ++ 'tag': {'type': 'string'}, ++ 'volume-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentInfo'}}, ++ 'type': 'object'}, ++ 'volumes': {'items': {'$ref': '#/definitions/Volume'}, ++ 'type': 'array'}}, ++ 'required': ['tag', ++ 'instance-id', ++ 'nonce', ++ 'characteristics', ++ 'volumes', ++ 'volume-attachments', ++ 'network-config'], ++ 'type': 'object'}, ++ 'InstancesInfo': {'additionalProperties': False, ++ 'properties': {'machines': {'items': {'$ref': '#/definitions/InstanceInfo'}, ++ 'type': 'array'}}, ++ 'required': ['machines'], ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineContainers': {'additionalProperties': False, ++ 'properties': {'container-types': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'machine-tag': {'type': 'string'}}, ++ 'required': ['machine-tag', ++ 'container-types'], ++ 'type': 'object'}, ++ 'MachineContainersParams': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/MachineContainers'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'MachineNetworkConfigResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'items': {'$ref': '#/definitions/NetworkConfig'}, ++ 'type': 'array'}}, ++ 'required': ['info'], ++ 'type': 'object'}, ++ 'MachineNetworkConfigResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MachineNetworkConfigResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'NetworkConfig': {'additionalProperties': False, ++ 'properties': {'address': {'type': 'string'}, ++ 'cidr': {'type': 'string'}, ++ 'config-type': {'type': 'string'}, ++ 'device-index': {'type': 'integer'}, ++ 'disabled': {'type': 'boolean'}, ++ 'dns-search-domains': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'dns-servers': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'gateway-address': {'type': 'string'}, ++ 'interface-name': {'type': 'string'}, ++ 'interface-type': {'type': 'string'}, ++ 'mac-address': {'type': 'string'}, ++ 'mtu': {'type': 'integer'}, ++ 'no-auto-start': {'type': 'boolean'}, ++ 'parent-interface-name': {'type': 'string'}, ++ 'provider-address-id': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'provider-subnet-id': {'type': 'string'}, ++ 'provider-vlan-id': {'type': 'string'}, ++ 'routes': {'items': {'$ref': '#/definitions/NetworkRoute'}, ++ 'type': 'array'}, ++ 'vlan-tag': {'type': 'integer'}}, ++ 'required': ['device-index', ++ 'mac-address', ++ 'cidr', ++ 'mtu', ++ 'provider-id', ++ 'provider-subnet-id', ++ 'provider-space-id', ++ 'provider-address-id', ++ 'provider-vlan-id', ++ 'vlan-tag', ++ 'interface-name', ++ 'parent-interface-name', ++ 'interface-type', ++ 'disabled'], ++ 'type': 'object'}, ++ 'NetworkRoute': {'additionalProperties': False, ++ 'properties': {'destination-cidr': {'type': 'string'}, ++ 'gateway-ip': {'type': 'string'}, ++ 'metric': {'type': 'integer'}}, ++ 'required': ['destination-cidr', ++ 'gateway-ip', ++ 'metric'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'Number': {'additionalProperties': False, ++ 'properties': {'Build': {'type': 'integer'}, ++ 'Major': {'type': 'integer'}, ++ 'Minor': {'type': 'integer'}, ++ 'Patch': {'type': 'integer'}, ++ 'Tag': {'type': 'string'}}, ++ 'required': ['Major', ++ 'Minor', ++ 'Tag', ++ 'Patch', ++ 'Build'], ++ 'type': 'object'}, ++ 'ProvisioningInfo': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}, ++ 'controller-config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'image-metadata': {'items': {'$ref': '#/definitions/CloudImageMetadata'}, ++ 'type': 'array'}, ++ 'jobs': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'placement': {'type': 'string'}, ++ 'series': {'type': 'string'}, ++ 'subnets-to-zones': {'patternProperties': {'.*': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'tags': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'volume-attachments': {'items': {'$ref': '#/definitions/VolumeAttachmentParams'}, ++ 'type': 'array'}, ++ 'volumes': {'items': {'$ref': '#/definitions/VolumeParams'}, ++ 'type': 'array'}}, ++ 'required': ['constraints', ++ 'series', ++ 'placement', ++ 'jobs'], ++ 'type': 'object'}, ++ 'ProvisioningInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/ProvisioningInfo'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'ProvisioningInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ProvisioningInfoResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SetMachineNetworkConfig': {'additionalProperties': False, ++ 'properties': {'config': {'items': {'$ref': '#/definitions/NetworkConfig'}, ++ 'type': 'array'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'config'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Settings': {'additionalProperties': False, ++ 'properties': {'AutoNoProxy': {'type': 'string'}, ++ 'Ftp': {'type': 'string'}, ++ 'Http': {'type': 'string'}, ++ 'Https': {'type': 'string'}, ++ 'NoProxy': {'type': 'string'}}, ++ 'required': ['Http', ++ 'Https', ++ 'Ftp', ++ 'NoProxy', ++ 'AutoNoProxy'], ++ 'type': 'object'}, ++ 'StatusResult': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'id': {'type': 'string'}, ++ 'info': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['id', ++ 'life', ++ 'status', ++ 'info', ++ 'data', ++ 'since'], ++ 'type': 'object'}, ++ 'StatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'StringsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Tools': {'additionalProperties': False, ++ 'properties': {'sha256': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'url': {'type': 'string'}, ++ 'version': {'$ref': '#/definitions/Binary'}}, ++ 'required': ['version', 'url', 'size'], ++ 'type': 'object'}, ++ 'ToolsResult': {'additionalProperties': False, ++ 'properties': {'disable-ssl-hostname-verification': {'type': 'boolean'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'tools': {'items': {'$ref': '#/definitions/Tools'}, ++ 'type': 'array'}}, ++ 'required': ['tools', ++ 'disable-ssl-hostname-verification'], ++ 'type': 'object'}, ++ 'ToolsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ToolsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'UpdateBehavior': {'additionalProperties': False, ++ 'properties': {'enable-os-refresh-update': {'type': 'boolean'}, ++ 'enable-os-upgrade': {'type': 'boolean'}}, ++ 'required': ['enable-os-refresh-update', ++ 'enable-os-upgrade'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'Volume': {'additionalProperties': False, ++ 'properties': {'info': {'$ref': '#/definitions/VolumeInfo'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', 'info'], ++ 'type': 'object'}, ++ 'VolumeAttachmentInfo': {'additionalProperties': False, ++ 'properties': {'bus-address': {'type': 'string'}, ++ 'device-link': {'type': 'string'}, ++ 'device-name': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}}, ++ 'type': 'object'}, ++ 'VolumeAttachmentParams': {'additionalProperties': False, ++ 'properties': {'instance-id': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}, ++ 'provider': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}, ++ 'volume-id': {'type': 'string'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', ++ 'machine-tag', ++ 'provider'], ++ 'type': 'object'}, ++ 'VolumeInfo': {'additionalProperties': False, ++ 'properties': {'hardware-id': {'type': 'string'}, ++ 'persistent': {'type': 'boolean'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'volume-id': {'type': 'string'}, ++ 'wwn': {'type': 'string'}}, ++ 'required': ['volume-id', 'size', 'persistent'], ++ 'type': 'object'}, ++ 'VolumeParams': {'additionalProperties': False, ++ 'properties': {'attachment': {'$ref': '#/definitions/VolumeAttachmentParams'}, ++ 'attributes': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'provider': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'tags': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', ++ 'size', ++ 'provider'], ++ 'type': 'object'}, ++ 'WatchContainer': {'additionalProperties': False, ++ 'properties': {'container-type': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}}, ++ 'required': ['machine-tag', ++ 'container-type'], ++ 'type': 'object'}, ++ 'WatchContainers': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/WatchContainer'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}}, ++ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}}, ++ 'type': 'object'}, ++ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}}, ++ 'type': 'object'}, ++ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}}, ++ 'type': 'object'}, ++ 'Constraints': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ConstraintsResults'}}, ++ 'type': 'object'}, ++ 'ContainerConfig': {'properties': {'Result': {'$ref': '#/definitions/ContainerConfig'}}, ++ 'type': 'object'}, ++ 'ContainerManagerConfig': {'properties': {'Params': {'$ref': '#/definitions/ContainerManagerConfigParams'}, ++ 'Result': {'$ref': '#/definitions/ContainerManagerConfig'}}, ++ 'type': 'object'}, ++ 'ControllerConfig': {'properties': {'Result': {'$ref': '#/definitions/ControllerConfigResult'}}, ++ 'type': 'object'}, ++ 'DistributionGroup': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/DistributionGroupResults'}}, ++ 'type': 'object'}, ++ 'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'FindTools': {'properties': {'Params': {'$ref': '#/definitions/FindToolsParams'}, ++ 'Result': {'$ref': '#/definitions/FindToolsResult'}}, ++ 'type': 'object'}, ++ 'GetContainerInterfaceInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MachineNetworkConfigResults'}}, ++ 'type': 'object'}, ++ 'HostChangesForContainers': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/HostNetworkChangeResults'}}, ++ 'type': 'object'}, ++ 'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'InstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StatusResults'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'MachinesWithTransientErrors': {'properties': {'Result': {'$ref': '#/definitions/StatusResults'}}, ++ 'type': 'object'}, ++ 'MarkMachinesForRemoval': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'PrepareContainerInterfaceInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MachineNetworkConfigResults'}}, ++ 'type': 'object'}, ++ 'ProvisioningInfo': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ProvisioningInfoResults'}}, ++ 'type': 'object'}, ++ 'ReleaseContainerAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Series': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'SetHostMachineNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/SetMachineNetworkConfig'}}, ++ 'type': 'object'}, ++ 'SetInstanceInfo': {'properties': {'Params': {'$ref': '#/definitions/InstancesInfo'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetInstanceStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetObservedNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/SetMachineNetworkConfig'}}, ++ 'type': 'object'}, ++ 'SetPasswords': {'properties': {'Params': {'$ref': '#/definitions/EntityPasswords'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetProviderNetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetSupportedContainers': {'properties': {'Params': {'$ref': '#/definitions/MachineContainersParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'StateAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}}, ++ 'type': 'object'}, ++ 'Status': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StatusResults'}}, ++ 'type': 'object'}, ++ 'Tools': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ToolsResults'}}, ++ 'type': 'object'}, ++ 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchAllContainers': {'properties': {'Params': {'$ref': '#/definitions/WatchContainers'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchContainers': {'properties': {'Params': {'$ref': '#/definitions/WatchContainers'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchMachineErrorRetry': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchModelMachines': {'properties': {'Result': {'$ref': '#/definitions/StringsWatchResult'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringsResult) ++ async def APIAddresses(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='APIAddresses', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(APIHostPortsResult) ++ async def APIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='APIHostPorts', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BytesResult) ++ async def CACert(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='CACert', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ConstraintsResults) ++ async def Constraints(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ConstraintsResult]<~ConstraintsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='Constraints', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ContainerConfig) ++ async def ContainerConfig(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('UpdateBehavior'), str, _ForwardRef('Settings'), _ForwardRef('Settings'), bool] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='ContainerConfig', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ContainerManagerConfig) ++ async def ContainerManagerConfig(self, type_): ++ ''' ++ type_ : str ++ Returns -> typing.Mapping<~KT, +VT_co>[str, str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='ContainerManagerConfig', version=3, params=_params) ++ _params['type'] = type_ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ControllerConfigResult) ++ async def ControllerConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='ControllerConfig', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DistributionGroupResults) ++ async def DistributionGroup(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~DistributionGroupResult]<~DistributionGroupResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='DistributionGroup', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnsureDead(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='EnsureDead', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FindToolsResult) ++ async def FindTools(self, arch, major, minor, number, series): ++ ''' ++ arch : str ++ major : int ++ minor : int ++ number : Number ++ series : str ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[~Tools]<~Tools>] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='FindTools', version=3, params=_params) ++ _params['arch'] = arch ++ _params['major'] = major ++ _params['minor'] = minor ++ _params['number'] = number ++ _params['series'] = series ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachineNetworkConfigResults) ++ async def GetContainerInterfaceInfo(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MachineNetworkConfigResult]<~MachineNetworkConfigResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='GetContainerInterfaceInfo', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(HostNetworkChangeResults) ++ async def HostChangesForContainers(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~HostNetworkChange]<~HostNetworkChange> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='HostChangesForContainers', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def InstanceId(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='InstanceId', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusResults) ++ async def InstanceStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='InstanceStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='Life', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusResults) ++ async def MachinesWithTransientErrors(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='MachinesWithTransientErrors', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def MarkMachinesForRemoval(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='MarkMachinesForRemoval', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='ModelConfig', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def ModelUUID(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='ModelUUID', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachineNetworkConfigResults) ++ async def PrepareContainerInterfaceInfo(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MachineNetworkConfigResult]<~MachineNetworkConfigResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='PrepareContainerInterfaceInfo', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ProvisioningInfoResults) ++ async def ProvisioningInfo(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ProvisioningInfoResult]<~ProvisioningInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='ProvisioningInfo', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ReleaseContainerAddresses(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='ReleaseContainerAddresses', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Remove(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='Remove', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def Series(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='Series', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetHostMachineNetworkConfig(self, config, tag): ++ ''' ++ config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig> ++ tag : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetHostMachineNetworkConfig', version=3, params=_params) ++ _params['config'] = config ++ _params['tag'] = tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetInstanceInfo(self, machines): ++ ''' ++ machines : typing.Sequence<+T_co>[~InstanceInfo]<~InstanceInfo> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetInstanceInfo', version=3, params=_params) ++ _params['machines'] = machines ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetInstanceStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetInstanceStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetObservedNetworkConfig(self, config, tag): ++ ''' ++ config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig> ++ tag : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetObservedNetworkConfig', version=3, params=_params) ++ _params['config'] = config ++ _params['tag'] = tag ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetPasswords(self, changes): ++ ''' ++ changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetPasswords', version=3, params=_params) ++ _params['changes'] = changes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetProviderNetworkConfig(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetProviderNetworkConfig', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetSupportedContainers(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~MachineContainers]<~MachineContainers> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='SetSupportedContainers', version=3, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsResult) ++ async def StateAddresses(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='StateAddresses', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusResults) ++ async def Status(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='Status', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ToolsResults) ++ async def Tools(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ToolsResult]<~ToolsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='Tools', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='UpdateStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchAPIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='WatchAPIHostPorts', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchAllContainers(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~WatchContainer]<~WatchContainer> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='WatchAllContainers', version=3, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchContainers(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~WatchContainer]<~WatchContainer> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='WatchContainers', version=3, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForModelConfigChanges(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='WatchForModelConfigChanges', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchMachineErrorRetry(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='WatchMachineErrorRetry', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResult) ++ async def WatchModelMachines(self): ++ ''' ++ ++ Returns -> typing.Union[typing.Sequence<+T_co>[str], _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Provisioner', request='WatchModelMachines', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class SpacesFacade(Type): ++ name = 'Spaces' ++ version = 3 ++ schema = {'definitions': {'CreateSpaceParams': {'additionalProperties': False, ++ 'properties': {'provider-id': {'type': 'string'}, ++ 'public': {'type': 'boolean'}, ++ 'space-tag': {'type': 'string'}, ++ 'subnet-tags': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['subnet-tags', ++ 'space-tag', ++ 'public'], ++ 'type': 'object'}, ++ 'CreateSpacesParams': {'additionalProperties': False, ++ 'properties': {'spaces': {'items': {'$ref': '#/definitions/CreateSpaceParams'}, ++ 'type': 'array'}}, ++ 'required': ['spaces'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ListSpacesResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/Space'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Space': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}, ++ 'subnets': {'items': {'$ref': '#/definitions/Subnet'}, ++ 'type': 'array'}}, ++ 'required': ['name', 'subnets'], ++ 'type': 'object'}, ++ 'Subnet': {'additionalProperties': False, ++ 'properties': {'cidr': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-network-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'space-tag': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'vlan-tag': {'type': 'integer'}, ++ 'zones': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['cidr', ++ 'vlan-tag', ++ 'life', ++ 'space-tag', ++ 'zones'], ++ 'type': 'object'}}, ++ 'properties': {'CreateSpaces': {'properties': {'Params': {'$ref': '#/definitions/CreateSpacesParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ListSpaces': {'properties': {'Result': {'$ref': '#/definitions/ListSpacesResults'}}, ++ 'type': 'object'}, ++ 'ReloadSpaces': {'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def CreateSpaces(self, spaces): ++ ''' ++ spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Spaces', request='CreateSpaces', version=3, params=_params) ++ _params['spaces'] = spaces ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ListSpacesResults) ++ async def ListSpaces(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~Space]<~Space> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Spaces', request='ListSpaces', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def ReloadSpaces(self): ++ ''' ++ ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Spaces', request='ReloadSpaces', version=3, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class StorageFacade(Type): ++ name = 'Storage' ++ version = 3 ++ schema = {'definitions': {'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatus': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['status', 'info', 'since'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'FilesystemAttachmentDetails': {'additionalProperties': False, ++ 'properties': {'FilesystemAttachmentInfo': {'$ref': '#/definitions/FilesystemAttachmentInfo'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['FilesystemAttachmentInfo'], ++ 'type': 'object'}, ++ 'FilesystemAttachmentInfo': {'additionalProperties': False, ++ 'properties': {'mount-point': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}}, ++ 'type': 'object'}, ++ 'FilesystemDetails': {'additionalProperties': False, ++ 'properties': {'filesystem-tag': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/FilesystemInfo'}, ++ 'life': {'type': 'string'}, ++ 'machine-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/FilesystemAttachmentDetails'}}, ++ 'type': 'object'}, ++ 'status': {'$ref': '#/definitions/EntityStatus'}, ++ 'storage': {'$ref': '#/definitions/StorageDetails'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['filesystem-tag', ++ 'info', ++ 'status'], ++ 'type': 'object'}, ++ 'FilesystemDetailsListResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'$ref': '#/definitions/FilesystemDetails'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FilesystemDetailsListResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemDetailsListResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FilesystemFilter': {'additionalProperties': False, ++ 'properties': {'machines': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FilesystemFilters': {'additionalProperties': False, ++ 'properties': {'filters': {'items': {'$ref': '#/definitions/FilesystemFilter'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FilesystemInfo': {'additionalProperties': False, ++ 'properties': {'filesystem-id': {'type': 'string'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'required': ['filesystem-id', ++ 'pool', ++ 'size'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'StorageAddParams': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'storage': {'$ref': '#/definitions/StorageConstraints'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['unit', 'name', 'storage'], ++ 'type': 'object'}, ++ 'StorageAttachmentDetails': {'additionalProperties': False, ++ 'properties': {'life': {'type': 'string'}, ++ 'location': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}, ++ 'storage-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['storage-tag', ++ 'unit-tag', ++ 'machine-tag'], ++ 'type': 'object'}, ++ 'StorageAttachmentId': {'additionalProperties': False, ++ 'properties': {'storage-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['storage-tag', ++ 'unit-tag'], ++ 'type': 'object'}, ++ 'StorageAttachmentIds': {'additionalProperties': False, ++ 'properties': {'ids': {'items': {'$ref': '#/definitions/StorageAttachmentId'}, ++ 'type': 'array'}}, ++ 'required': ['ids'], ++ 'type': 'object'}, ++ 'StorageConstraints': {'additionalProperties': False, ++ 'properties': {'count': {'type': 'integer'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'StorageDetails': {'additionalProperties': False, ++ 'properties': {'attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageAttachmentDetails'}}, ++ 'type': 'object'}, ++ 'kind': {'type': 'integer'}, ++ 'life': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'persistent': {'type': 'boolean'}, ++ 'status': {'$ref': '#/definitions/EntityStatus'}, ++ 'storage-tag': {'type': 'string'}}, ++ 'required': ['storage-tag', ++ 'owner-tag', ++ 'kind', ++ 'status', ++ 'persistent'], ++ 'type': 'object'}, ++ 'StorageDetailsListResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'$ref': '#/definitions/StorageDetails'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StorageDetailsListResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StorageDetailsListResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StorageDetailsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/StorageDetails'}}, ++ 'type': 'object'}, ++ 'StorageDetailsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StorageDetailsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StorageFilter': {'additionalProperties': False, ++ 'type': 'object'}, ++ 'StorageFilters': {'additionalProperties': False, ++ 'properties': {'filters': {'items': {'$ref': '#/definitions/StorageFilter'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StoragePool': {'additionalProperties': False, ++ 'properties': {'attrs': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'name': {'type': 'string'}, ++ 'provider': {'type': 'string'}}, ++ 'required': ['name', 'provider', 'attrs'], ++ 'type': 'object'}, ++ 'StoragePoolFilter': {'additionalProperties': False, ++ 'properties': {'names': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'providers': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StoragePoolFilters': {'additionalProperties': False, ++ 'properties': {'filters': {'items': {'$ref': '#/definitions/StoragePoolFilter'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StoragePoolsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'storage-pools': {'items': {'$ref': '#/definitions/StoragePool'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StoragePoolsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StoragePoolsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StoragesAddParams': {'additionalProperties': False, ++ 'properties': {'storages': {'items': {'$ref': '#/definitions/StorageAddParams'}, ++ 'type': 'array'}}, ++ 'required': ['storages'], ++ 'type': 'object'}, ++ 'VolumeAttachmentDetails': {'additionalProperties': False, ++ 'properties': {'VolumeAttachmentInfo': {'$ref': '#/definitions/VolumeAttachmentInfo'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['VolumeAttachmentInfo'], ++ 'type': 'object'}, ++ 'VolumeAttachmentInfo': {'additionalProperties': False, ++ 'properties': {'bus-address': {'type': 'string'}, ++ 'device-link': {'type': 'string'}, ++ 'device-name': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}}, ++ 'type': 'object'}, ++ 'VolumeDetails': {'additionalProperties': False, ++ 'properties': {'info': {'$ref': '#/definitions/VolumeInfo'}, ++ 'life': {'type': 'string'}, ++ 'machine-attachments': {'patternProperties': {'.*': {'$ref': '#/definitions/VolumeAttachmentDetails'}}, ++ 'type': 'object'}, ++ 'status': {'$ref': '#/definitions/EntityStatus'}, ++ 'storage': {'$ref': '#/definitions/StorageDetails'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', 'info', 'status'], ++ 'type': 'object'}, ++ 'VolumeDetailsListResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'$ref': '#/definitions/VolumeDetails'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'VolumeDetailsListResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/VolumeDetailsListResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'VolumeFilter': {'additionalProperties': False, ++ 'properties': {'machines': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'VolumeFilters': {'additionalProperties': False, ++ 'properties': {'filters': {'items': {'$ref': '#/definitions/VolumeFilter'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'VolumeInfo': {'additionalProperties': False, ++ 'properties': {'hardware-id': {'type': 'string'}, ++ 'persistent': {'type': 'boolean'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'volume-id': {'type': 'string'}, ++ 'wwn': {'type': 'string'}}, ++ 'required': ['volume-id', 'size', 'persistent'], ++ 'type': 'object'}}, ++ 'properties': {'AddToUnit': {'properties': {'Params': {'$ref': '#/definitions/StoragesAddParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Attach': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'CreatePool': {'properties': {'Params': {'$ref': '#/definitions/StoragePool'}}, ++ 'type': 'object'}, ++ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Detach': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ListFilesystems': {'properties': {'Params': {'$ref': '#/definitions/FilesystemFilters'}, ++ 'Result': {'$ref': '#/definitions/FilesystemDetailsListResults'}}, ++ 'type': 'object'}, ++ 'ListPools': {'properties': {'Params': {'$ref': '#/definitions/StoragePoolFilters'}, ++ 'Result': {'$ref': '#/definitions/StoragePoolsResults'}}, ++ 'type': 'object'}, ++ 'ListStorageDetails': {'properties': {'Params': {'$ref': '#/definitions/StorageFilters'}, ++ 'Result': {'$ref': '#/definitions/StorageDetailsListResults'}}, ++ 'type': 'object'}, ++ 'ListVolumes': {'properties': {'Params': {'$ref': '#/definitions/VolumeFilters'}, ++ 'Result': {'$ref': '#/definitions/VolumeDetailsListResults'}}, ++ 'type': 'object'}, ++ 'StorageDetails': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StorageDetailsResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddToUnit(self, storages): ++ ''' ++ storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='AddToUnit', version=3, params=_params) ++ _params['storages'] = storages ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Attach(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='Attach', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def CreatePool(self, attrs, name, provider): ++ ''' ++ attrs : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ name : str ++ provider : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='CreatePool', version=3, params=_params) ++ _params['attrs'] = attrs ++ _params['name'] = name ++ _params['provider'] = provider ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Destroy(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='Destroy', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Detach(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='Detach', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FilesystemDetailsListResults) ++ async def ListFilesystems(self, filters): ++ ''' ++ filters : typing.Sequence<+T_co>[~FilesystemFilter]<~FilesystemFilter> ++ Returns -> typing.Sequence<+T_co>[~FilesystemDetailsListResult]<~FilesystemDetailsListResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='ListFilesystems', version=3, params=_params) ++ _params['filters'] = filters ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StoragePoolsResults) ++ async def ListPools(self, filters): ++ ''' ++ filters : typing.Sequence<+T_co>[~StoragePoolFilter]<~StoragePoolFilter> ++ Returns -> typing.Sequence<+T_co>[~StoragePoolsResult]<~StoragePoolsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='ListPools', version=3, params=_params) ++ _params['filters'] = filters ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StorageDetailsListResults) ++ async def ListStorageDetails(self, filters): ++ ''' ++ filters : typing.Sequence<+T_co>[~StorageFilter]<~StorageFilter> ++ Returns -> typing.Sequence<+T_co>[~StorageDetailsListResult]<~StorageDetailsListResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='ListStorageDetails', version=3, params=_params) ++ _params['filters'] = filters ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(VolumeDetailsListResults) ++ async def ListVolumes(self, filters): ++ ''' ++ filters : typing.Sequence<+T_co>[~VolumeFilter]<~VolumeFilter> ++ Returns -> typing.Sequence<+T_co>[~VolumeDetailsListResult]<~VolumeDetailsListResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='ListVolumes', version=3, params=_params) ++ _params['filters'] = filters ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StorageDetailsResults) ++ async def StorageDetails(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StorageDetailsResult]<~StorageDetailsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Storage', request='StorageDetails', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class StorageProvisionerFacade(Type): ++ name = 'StorageProvisioner' ++ version = 3 ++ schema = {'definitions': {'BlockDevice': {'additionalProperties': False, ++ 'properties': {'BusAddress': {'type': 'string'}, ++ 'DeviceLinks': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'DeviceName': {'type': 'string'}, ++ 'FilesystemType': {'type': 'string'}, ++ 'HardwareId': {'type': 'string'}, ++ 'InUse': {'type': 'boolean'}, ++ 'Label': {'type': 'string'}, ++ 'MountPoint': {'type': 'string'}, ++ 'Size': {'type': 'integer'}, ++ 'UUID': {'type': 'string'}, ++ 'WWN': {'type': 'string'}}, ++ 'required': ['DeviceName', ++ 'DeviceLinks', ++ 'Label', ++ 'UUID', ++ 'HardwareId', ++ 'WWN', ++ 'BusAddress', ++ 'Size', ++ 'FilesystemType', ++ 'InUse', ++ 'MountPoint'], ++ 'type': 'object'}, ++ 'BlockDeviceResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/BlockDevice'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'BlockDeviceResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/BlockDeviceResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Filesystem': {'additionalProperties': False, ++ 'properties': {'filesystem-tag': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/FilesystemInfo'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['filesystem-tag', 'info'], ++ 'type': 'object'}, ++ 'FilesystemAttachment': {'additionalProperties': False, ++ 'properties': {'filesystem-tag': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/FilesystemAttachmentInfo'}, ++ 'machine-tag': {'type': 'string'}}, ++ 'required': ['filesystem-tag', ++ 'machine-tag', ++ 'info'], ++ 'type': 'object'}, ++ 'FilesystemAttachmentInfo': {'additionalProperties': False, ++ 'properties': {'mount-point': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}}, ++ 'type': 'object'}, ++ 'FilesystemAttachmentParams': {'additionalProperties': False, ++ 'properties': {'filesystem-id': {'type': 'string'}, ++ 'filesystem-tag': {'type': 'string'}, ++ 'instance-id': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}, ++ 'mount-point': {'type': 'string'}, ++ 'provider': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}}, ++ 'required': ['filesystem-tag', ++ 'machine-tag', ++ 'provider'], ++ 'type': 'object'}, ++ 'FilesystemAttachmentParamsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/FilesystemAttachmentParams'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'FilesystemAttachmentParamsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemAttachmentParamsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FilesystemAttachmentResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/FilesystemAttachment'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'FilesystemAttachmentResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemAttachmentResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FilesystemAttachments': {'additionalProperties': False, ++ 'properties': {'filesystem-attachments': {'items': {'$ref': '#/definitions/FilesystemAttachment'}, ++ 'type': 'array'}}, ++ 'required': ['filesystem-attachments'], ++ 'type': 'object'}, ++ 'FilesystemInfo': {'additionalProperties': False, ++ 'properties': {'filesystem-id': {'type': 'string'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'required': ['filesystem-id', ++ 'pool', ++ 'size'], ++ 'type': 'object'}, ++ 'FilesystemParams': {'additionalProperties': False, ++ 'properties': {'attachment': {'$ref': '#/definitions/FilesystemAttachmentParams'}, ++ 'attributes': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'filesystem-tag': {'type': 'string'}, ++ 'provider': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'tags': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['filesystem-tag', ++ 'size', ++ 'provider'], ++ 'type': 'object'}, ++ 'FilesystemParamsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/FilesystemParams'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'FilesystemParamsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemParamsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'FilesystemResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/Filesystem'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'FilesystemResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/FilesystemResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Filesystems': {'additionalProperties': False, ++ 'properties': {'filesystems': {'items': {'$ref': '#/definitions/Filesystem'}, ++ 'type': 'array'}}, ++ 'required': ['filesystems'], ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachineStorageId': {'additionalProperties': False, ++ 'properties': {'attachment-tag': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}}, ++ 'required': ['machine-tag', ++ 'attachment-tag'], ++ 'type': 'object'}, ++ 'MachineStorageIds': {'additionalProperties': False, ++ 'properties': {'ids': {'items': {'$ref': '#/definitions/MachineStorageId'}, ++ 'type': 'array'}}, ++ 'required': ['ids'], ++ 'type': 'object'}, ++ 'MachineStorageIdsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'$ref': '#/definitions/MachineStorageId'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id', ++ 'changes'], ++ 'type': 'object'}, ++ 'MachineStorageIdsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MachineStorageIdsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'StringsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Volume': {'additionalProperties': False, ++ 'properties': {'info': {'$ref': '#/definitions/VolumeInfo'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', 'info'], ++ 'type': 'object'}, ++ 'VolumeAttachment': {'additionalProperties': False, ++ 'properties': {'info': {'$ref': '#/definitions/VolumeAttachmentInfo'}, ++ 'machine-tag': {'type': 'string'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', ++ 'machine-tag', ++ 'info'], ++ 'type': 'object'}, ++ 'VolumeAttachmentInfo': {'additionalProperties': False, ++ 'properties': {'bus-address': {'type': 'string'}, ++ 'device-link': {'type': 'string'}, ++ 'device-name': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}}, ++ 'type': 'object'}, ++ 'VolumeAttachmentParams': {'additionalProperties': False, ++ 'properties': {'instance-id': {'type': 'string'}, ++ 'machine-tag': {'type': 'string'}, ++ 'provider': {'type': 'string'}, ++ 'read-only': {'type': 'boolean'}, ++ 'volume-id': {'type': 'string'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', ++ 'machine-tag', ++ 'provider'], ++ 'type': 'object'}, ++ 'VolumeAttachmentParamsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/VolumeAttachmentParams'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'VolumeAttachmentParamsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/VolumeAttachmentParamsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'VolumeAttachmentResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/VolumeAttachment'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'VolumeAttachmentResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/VolumeAttachmentResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'VolumeAttachments': {'additionalProperties': False, ++ 'properties': {'volume-attachments': {'items': {'$ref': '#/definitions/VolumeAttachment'}, ++ 'type': 'array'}}, ++ 'required': ['volume-attachments'], ++ 'type': 'object'}, ++ 'VolumeInfo': {'additionalProperties': False, ++ 'properties': {'hardware-id': {'type': 'string'}, ++ 'persistent': {'type': 'boolean'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'volume-id': {'type': 'string'}, ++ 'wwn': {'type': 'string'}}, ++ 'required': ['volume-id', 'size', 'persistent'], ++ 'type': 'object'}, ++ 'VolumeParams': {'additionalProperties': False, ++ 'properties': {'attachment': {'$ref': '#/definitions/VolumeAttachmentParams'}, ++ 'attributes': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'provider': {'type': 'string'}, ++ 'size': {'type': 'integer'}, ++ 'tags': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'volume-tag': {'type': 'string'}}, ++ 'required': ['volume-tag', ++ 'size', ++ 'provider'], ++ 'type': 'object'}, ++ 'VolumeParamsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/VolumeParams'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'VolumeParamsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/VolumeParamsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'VolumeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/Volume'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'VolumeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/VolumeResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Volumes': {'additionalProperties': False, ++ 'properties': {'volumes': {'items': {'$ref': '#/definitions/Volume'}, ++ 'type': 'array'}}, ++ 'required': ['volumes'], ++ 'type': 'object'}}, ++ 'properties': {'AttachmentLife': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'FilesystemAttachmentParams': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'}, ++ 'Result': {'$ref': '#/definitions/FilesystemAttachmentParamsResults'}}, ++ 'type': 'object'}, ++ 'FilesystemAttachments': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'}, ++ 'Result': {'$ref': '#/definitions/FilesystemAttachmentResults'}}, ++ 'type': 'object'}, ++ 'FilesystemParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/FilesystemParamsResults'}}, ++ 'type': 'object'}, ++ 'Filesystems': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/FilesystemResults'}}, ++ 'type': 'object'}, ++ 'InstanceId': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'Remove': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'RemoveAttachment': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetFilesystemAttachmentInfo': {'properties': {'Params': {'$ref': '#/definitions/FilesystemAttachments'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetFilesystemInfo': {'properties': {'Params': {'$ref': '#/definitions/Filesystems'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetVolumeAttachmentInfo': {'properties': {'Params': {'$ref': '#/definitions/VolumeAttachments'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetVolumeInfo': {'properties': {'Params': {'$ref': '#/definitions/Volumes'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'UpdateStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'VolumeAttachmentParams': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'}, ++ 'Result': {'$ref': '#/definitions/VolumeAttachmentParamsResults'}}, ++ 'type': 'object'}, ++ 'VolumeAttachments': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'}, ++ 'Result': {'$ref': '#/definitions/VolumeAttachmentResults'}}, ++ 'type': 'object'}, ++ 'VolumeBlockDevices': {'properties': {'Params': {'$ref': '#/definitions/MachineStorageIds'}, ++ 'Result': {'$ref': '#/definitions/BlockDeviceResults'}}, ++ 'type': 'object'}, ++ 'VolumeParams': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/VolumeParamsResults'}}, ++ 'type': 'object'}, ++ 'Volumes': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/VolumeResults'}}, ++ 'type': 'object'}, ++ 'WatchBlockDevices': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchFilesystemAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchFilesystems': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchMachines': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchVolumeAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MachineStorageIdsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchVolumes': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(LifeResults) ++ async def AttachmentLife(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='AttachmentLife', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnsureDead(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='EnsureDead', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FilesystemAttachmentParamsResults) ++ async def FilesystemAttachmentParams(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ Returns -> typing.Sequence<+T_co>[~FilesystemAttachmentParamsResult]<~FilesystemAttachmentParamsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='FilesystemAttachmentParams', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FilesystemAttachmentResults) ++ async def FilesystemAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ Returns -> typing.Sequence<+T_co>[~FilesystemAttachmentResult]<~FilesystemAttachmentResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='FilesystemAttachments', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FilesystemParamsResults) ++ async def FilesystemParams(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~FilesystemParamsResult]<~FilesystemParamsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='FilesystemParams', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(FilesystemResults) ++ async def Filesystems(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~FilesystemResult]<~FilesystemResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='Filesystems', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def InstanceId(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='InstanceId', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='Life', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Remove(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='Remove', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RemoveAttachment(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='RemoveAttachment', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetFilesystemAttachmentInfo(self, filesystem_attachments): ++ ''' ++ filesystem_attachments : typing.Sequence<+T_co>[~FilesystemAttachment]<~FilesystemAttachment> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='SetFilesystemAttachmentInfo', version=3, params=_params) ++ _params['filesystem-attachments'] = filesystem_attachments ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetFilesystemInfo(self, filesystems): ++ ''' ++ filesystems : typing.Sequence<+T_co>[~Filesystem]<~Filesystem> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='SetFilesystemInfo', version=3, params=_params) ++ _params['filesystems'] = filesystems ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='SetStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetVolumeAttachmentInfo(self, volume_attachments): ++ ''' ++ volume_attachments : typing.Sequence<+T_co>[~VolumeAttachment]<~VolumeAttachment> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='SetVolumeAttachmentInfo', version=3, params=_params) ++ _params['volume-attachments'] = volume_attachments ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetVolumeInfo(self, volumes): ++ ''' ++ volumes : typing.Sequence<+T_co>[~Volume]<~Volume> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='SetVolumeInfo', version=3, params=_params) ++ _params['volumes'] = volumes ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='UpdateStatus', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(VolumeAttachmentParamsResults) ++ async def VolumeAttachmentParams(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ Returns -> typing.Sequence<+T_co>[~VolumeAttachmentParamsResult]<~VolumeAttachmentParamsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='VolumeAttachmentParams', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(VolumeAttachmentResults) ++ async def VolumeAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ Returns -> typing.Sequence<+T_co>[~VolumeAttachmentResult]<~VolumeAttachmentResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='VolumeAttachments', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BlockDeviceResults) ++ async def VolumeBlockDevices(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ Returns -> typing.Sequence<+T_co>[~BlockDeviceResult]<~BlockDeviceResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='VolumeBlockDevices', version=3, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(VolumeParamsResults) ++ async def VolumeParams(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~VolumeParamsResult]<~VolumeParamsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='VolumeParams', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(VolumeResults) ++ async def Volumes(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~VolumeResult]<~VolumeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='Volumes', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchBlockDevices(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='WatchBlockDevices', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachineStorageIdsWatchResults) ++ async def WatchFilesystemAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MachineStorageIdsWatchResult]<~MachineStorageIdsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='WatchFilesystemAttachments', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchFilesystems(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='WatchFilesystems', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchMachines(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='WatchMachines', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachineStorageIdsWatchResults) ++ async def WatchVolumeAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MachineStorageIdsWatchResult]<~MachineStorageIdsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='WatchVolumeAttachments', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchVolumes(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='StorageProvisioner', request='WatchVolumes', version=3, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ diff --cc modules/libjuju/juju/client/_client4.py index 0000000,0000000..68ee3f9 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/_client4.py @@@ -1,0 -1,0 +1,2671 @@@ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++from juju.client.facade import Type, ReturnMapping ++from juju.client._definitions import * ++ ++ ++class ApplicationFacade(Type): ++ name = 'Application' ++ version = 4 ++ schema = {'definitions': {'AddApplicationUnits': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'num-units', ++ 'placement'], ++ 'type': 'object'}, ++ 'AddApplicationUnitsResults': {'additionalProperties': False, ++ 'properties': {'units': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['units'], ++ 'type': 'object'}, ++ 'AddRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'AddRelationResults': {'additionalProperties': False, ++ 'properties': {'endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}}, ++ 'type': 'object'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelations': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelationsResults': {'additionalProperties': False, ++ 'properties': {'charm-relations': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['charm-relations'], ++ 'type': 'object'}, ++ 'ApplicationDeploy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-yaml': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}, ++ 'resources': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'series': {'type': 'string'}, ++ 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'series', ++ 'charm-url', ++ 'channel', ++ 'num-units', ++ 'config-yaml', ++ 'constraints'], ++ 'type': 'object'}, ++ 'ApplicationDestroy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationExpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGetResults': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm', ++ 'config', ++ 'constraints', ++ 'series'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredential': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'metrics-credentials': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'metrics-credentials'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredentials': {'additionalProperties': False, ++ 'properties': {'creds': {'items': {'$ref': '#/definitions/ApplicationMetricCredential'}, ++ 'type': 'array'}}, ++ 'required': ['creds'], ++ 'type': 'object'}, ++ 'ApplicationSet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationSetCharm': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config-settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-settings-yaml': {'type': 'string'}, ++ 'force-series': {'type': 'boolean'}, ++ 'force-units': {'type': 'boolean'}, ++ 'resource-ids': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'storage-constraints': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageConstraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'channel', ++ 'force-units', ++ 'force-series'], ++ 'type': 'object'}, ++ 'ApplicationURLs': {'additionalProperties': False, ++ 'properties': {'application-urls': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ApplicationUnexpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationUnset': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationUpdate': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'force-charm-url': {'type': 'boolean'}, ++ 'force-series': {'type': 'boolean'}, ++ 'min-units': {'type': 'integer'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'settings-yaml': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'force-charm-url', ++ 'force-series', ++ 'settings-yaml'], ++ 'type': 'object'}, ++ 'ApplicationsDeploy': {'additionalProperties': False, ++ 'properties': {'applications': {'items': {'$ref': '#/definitions/ApplicationDeploy'}, ++ 'type': 'array'}}, ++ 'required': ['applications'], ++ 'type': 'object'}, ++ 'CharmRelation': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'optional': {'type': 'boolean'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'optional', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'Constraints': {'additionalProperties': False, ++ 'properties': {'Count': {'type': 'integer'}, ++ 'Pool': {'type': 'string'}, ++ 'Size': {'type': 'integer'}}, ++ 'required': ['Pool', 'Size', 'Count'], ++ 'type': 'object'}, ++ 'ConsumeApplicationArg': {'additionalProperties': False, ++ 'properties': {'application-alias': {'type': 'string'}, ++ 'application-url': {'type': 'string'}}, ++ 'required': ['application-url'], ++ 'type': 'object'}, ++ 'ConsumeApplicationArgs': {'additionalProperties': False, ++ 'properties': {'args': {'items': {'$ref': '#/definitions/ConsumeApplicationArg'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ConsumeApplicationResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'local-name': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ConsumeApplicationResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ConsumeApplicationResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'DestroyApplicationInfo': {'additionalProperties': False, ++ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'destroyed-units': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyApplicationResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'$ref': '#/definitions/DestroyApplicationInfo'}}, ++ 'type': 'object'}, ++ 'DestroyApplicationResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyApplicationResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyApplicationUnits': {'additionalProperties': False, ++ 'properties': {'unit-names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['unit-names'], ++ 'type': 'object'}, ++ 'DestroyRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'DestroyUnitInfo': {'additionalProperties': False, ++ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyUnitResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'$ref': '#/definitions/DestroyUnitInfo'}}, ++ 'type': 'object'}, ++ 'DestroyUnitResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyUnitResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetApplicationConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'GetConstraintsResults': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Placement': {'additionalProperties': False, ++ 'properties': {'directive': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['scope', 'directive'], ++ 'type': 'object'}, ++ 'RemoteApplicationInfo': {'additionalProperties': False, ++ 'properties': {'application-url': {'type': 'string'}, ++ 'description': {'type': 'string'}, ++ 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'}, ++ 'type': 'array'}, ++ 'icon-url-path': {'type': 'string'}, ++ 'model-tag': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'source-model-label': {'type': 'string'}}, ++ 'required': ['model-tag', ++ 'name', ++ 'description', ++ 'application-url', ++ 'endpoints', ++ 'icon-url-path'], ++ 'type': 'object'}, ++ 'RemoteApplicationInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/RemoteApplicationInfo'}}, ++ 'type': 'object'}, ++ 'RemoteApplicationInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/RemoteApplicationInfoResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'RemoteEndpoint': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'SetConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['application', 'constraints'], ++ 'type': 'object'}, ++ 'StorageConstraints': {'additionalProperties': False, ++ 'properties': {'count': {'type': 'integer'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'}, ++ 'Result': {'$ref': '#/definitions/AddRelationResults'}}, ++ 'type': 'object'}, ++ 'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationUnits'}, ++ 'Result': {'$ref': '#/definitions/AddApplicationUnitsResults'}}, ++ 'type': 'object'}, ++ 'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ApplicationCharmRelations'}, ++ 'Result': {'$ref': '#/definitions/ApplicationCharmRelationsResults'}}, ++ 'type': 'object'}, ++ 'Consume': {'properties': {'Params': {'$ref': '#/definitions/ConsumeApplicationArgs'}, ++ 'Result': {'$ref': '#/definitions/ConsumeApplicationResults'}}, ++ 'type': 'object'}, ++ 'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationsDeploy'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationDestroy'}}, ++ 'type': 'object'}, ++ 'DestroyApplication': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/DestroyApplicationResults'}}, ++ 'type': 'object'}, ++ 'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}}, ++ 'type': 'object'}, ++ 'DestroyUnit': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/DestroyUnitResults'}}, ++ 'type': 'object'}, ++ 'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationUnits'}}, ++ 'type': 'object'}, ++ 'Expose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationExpose'}}, ++ 'type': 'object'}, ++ 'Get': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/ApplicationGetResults'}}, ++ 'type': 'object'}, ++ 'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/GetApplicationConstraints'}, ++ 'Result': {'$ref': '#/definitions/GetConstraintsResults'}}, ++ 'type': 'object'}, ++ 'RemoteApplicationInfo': {'properties': {'Params': {'$ref': '#/definitions/ApplicationURLs'}, ++ 'Result': {'$ref': '#/definitions/RemoteApplicationInfoResults'}}, ++ 'type': 'object'}, ++ 'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}}, ++ 'type': 'object'}, ++ 'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}}, ++ 'type': 'object'}, ++ 'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}}, ++ 'type': 'object'}, ++ 'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}}, ++ 'type': 'object'}, ++ 'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}}, ++ 'type': 'object'}, ++ 'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddRelationResults) ++ async def AddRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddRelation', version=4, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AddApplicationUnitsResults) ++ async def AddUnits(self, application, num_units, placement): ++ ''' ++ application : str ++ num_units : int ++ placement : typing.Sequence<+T_co>[~Placement]<~Placement> ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddUnits', version=4, params=_params) ++ _params['application'] = application ++ _params['num-units'] = num_units ++ _params['placement'] = placement ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationCharmRelationsResults) ++ async def CharmRelations(self, application): ++ ''' ++ application : str ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='CharmRelations', version=4, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ConsumeApplicationResults) ++ async def Consume(self, args): ++ ''' ++ args : typing.Sequence<+T_co>[~ConsumeApplicationArg]<~ConsumeApplicationArg> ++ Returns -> typing.Sequence<+T_co>[~ConsumeApplicationResult]<~ConsumeApplicationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Consume', version=4, params=_params) ++ _params['args'] = args ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Deploy(self, applications): ++ ''' ++ applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Deploy', version=4, params=_params) ++ _params['applications'] = applications ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Destroy(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Destroy', version=4, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DestroyApplicationResults) ++ async def DestroyApplication(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~DestroyApplicationResult]<~DestroyApplicationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyApplication', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyRelation', version=4, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DestroyUnitResults) ++ async def DestroyUnit(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~DestroyUnitResult]<~DestroyUnitResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyUnit', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyUnits(self, unit_names): ++ ''' ++ unit_names : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyUnits', version=4, params=_params) ++ _params['unit-names'] = unit_names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Expose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Expose', version=4, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationGetResults) ++ async def Get(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Get', version=4, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def GetCharmURL(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetCharmURL', version=4, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(GetConstraintsResults) ++ async def GetConstraints(self, application): ++ ''' ++ application : str ++ Returns -> Value ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetConstraints', version=4, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RemoteApplicationInfoResults) ++ async def RemoteApplicationInfo(self, application_urls): ++ ''' ++ application_urls : typing.Sequence<+T_co>[str] ++ Returns -> typing.Sequence<+T_co>[~RemoteApplicationInfoResult]<~RemoteApplicationInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='RemoteApplicationInfo', version=4, params=_params) ++ _params['application-urls'] = application_urls ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Set(self, application, options): ++ ''' ++ application : str ++ options : typing.Mapping<~KT, +VT_co>[str, str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Set', version=4, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetCharm(self, application, channel, charm_url, config_settings, config_settings_yaml, force_series, force_units, resource_ids, storage_constraints): ++ ''' ++ application : str ++ channel : str ++ charm_url : str ++ config_settings : typing.Mapping<~KT, +VT_co>[str, str] ++ config_settings_yaml : str ++ force_series : bool ++ force_units : bool ++ resource_ids : typing.Mapping<~KT, +VT_co>[str, str] ++ storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints> ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetCharm', version=4, params=_params) ++ _params['application'] = application ++ _params['channel'] = channel ++ _params['charm-url'] = charm_url ++ _params['config-settings'] = config_settings ++ _params['config-settings-yaml'] = config_settings_yaml ++ _params['force-series'] = force_series ++ _params['force-units'] = force_units ++ _params['resource-ids'] = resource_ids ++ _params['storage-constraints'] = storage_constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetConstraints(self, application, constraints): ++ ''' ++ application : str ++ constraints : Value ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetConstraints', version=4, params=_params) ++ _params['application'] = application ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetMetricCredentials(self, creds): ++ ''' ++ creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetMetricCredentials', version=4, params=_params) ++ _params['creds'] = creds ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unexpose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unexpose', version=4, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unset(self, application, options): ++ ''' ++ application : str ++ options : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unset', version=4, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Update(self, application, charm_url, constraints, force_charm_url, force_series, min_units, settings, settings_yaml): ++ ''' ++ application : str ++ charm_url : str ++ constraints : Value ++ force_charm_url : bool ++ force_series : bool ++ min_units : int ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ settings_yaml : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Update', version=4, params=_params) ++ _params['application'] = application ++ _params['charm-url'] = charm_url ++ _params['constraints'] = constraints ++ _params['force-charm-url'] = force_charm_url ++ _params['force-series'] = force_series ++ _params['min-units'] = min_units ++ _params['settings'] = settings ++ _params['settings-yaml'] = settings_yaml ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class UniterFacade(Type): ++ name = 'Uniter' ++ version = 4 ++ schema = {'definitions': {'APIHostPortsResult': {'additionalProperties': False, ++ 'properties': {'servers': {'items': {'items': {'$ref': '#/definitions/HostPort'}, ++ 'type': 'array'}, ++ 'type': 'array'}}, ++ 'required': ['servers'], ++ 'type': 'object'}, ++ 'Action': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'parameters': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'receiver': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'receiver', 'name'], ++ 'type': 'object'}, ++ 'ActionExecutionResult': {'additionalProperties': False, ++ 'properties': {'action-tag': {'type': 'string'}, ++ 'message': {'type': 'string'}, ++ 'results': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['action-tag', 'status'], ++ 'type': 'object'}, ++ 'ActionExecutionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionExecutionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ActionResult': {'additionalProperties': False, ++ 'properties': {'action': {'$ref': '#/definitions/Action'}, ++ 'completed': {'format': 'date-time', ++ 'type': 'string'}, ++ 'enqueued': {'format': 'date-time', ++ 'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'message': {'type': 'string'}, ++ 'output': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'started': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ActionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'ApplicationStatusResult': {'additionalProperties': False, ++ 'properties': {'application': {'$ref': '#/definitions/StatusResult'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/StatusResult'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'units'], ++ 'type': 'object'}, ++ 'ApplicationStatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationStatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'BoolResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'boolean'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'BoolResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/BoolResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'BytesResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'CharmRelation': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'optional': {'type': 'boolean'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'optional', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'CharmURL': {'additionalProperties': False, ++ 'properties': {'url': {'type': 'string'}}, ++ 'required': ['url'], ++ 'type': 'object'}, ++ 'CharmURLs': {'additionalProperties': False, ++ 'properties': {'urls': {'items': {'$ref': '#/definitions/CharmURL'}, ++ 'type': 'array'}}, ++ 'required': ['urls'], ++ 'type': 'object'}, ++ 'ConfigSettingsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'settings': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['settings'], ++ 'type': 'object'}, ++ 'ConfigSettingsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ConfigSettingsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Endpoint': {'additionalProperties': False, ++ 'properties': {'application-name': {'type': 'string'}, ++ 'relation': {'$ref': '#/definitions/CharmRelation'}}, ++ 'required': ['application-name', 'relation'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'EntitiesCharmURL': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityCharmURL'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'EntitiesPortRanges': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityPortRange'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityCharmURL': {'additionalProperties': False, ++ 'properties': {'charm-url': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'charm-url'], ++ 'type': 'object'}, ++ 'EntityPortRange': {'additionalProperties': False, ++ 'properties': {'from-port': {'type': 'integer'}, ++ 'protocol': {'type': 'string'}, ++ 'tag': {'type': 'string'}, ++ 'to-port': {'type': 'integer'}}, ++ 'required': ['tag', ++ 'protocol', ++ 'from-port', ++ 'to-port'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'EntityWorkloadVersion': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}, ++ 'workload-version': {'type': 'string'}}, ++ 'required': ['tag', ++ 'workload-version'], ++ 'type': 'object'}, ++ 'EntityWorkloadVersions': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityWorkloadVersion'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetLeadershipSettingsBulkResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/GetLeadershipSettingsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetLeadershipSettingsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['settings'], ++ 'type': 'object'}, ++ 'HostPort': {'additionalProperties': False, ++ 'properties': {'Address': {'$ref': '#/definitions/Address'}, ++ 'port': {'type': 'integer'}}, ++ 'required': ['Address', 'port'], ++ 'type': 'object'}, ++ 'IntResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'integer'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'IntResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/IntResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachinePortRange': {'additionalProperties': False, ++ 'properties': {'port-range': {'$ref': '#/definitions/PortRange'}, ++ 'relation-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['unit-tag', ++ 'relation-tag', ++ 'port-range'], ++ 'type': 'object'}, ++ 'MachinePortsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'ports': {'items': {'$ref': '#/definitions/MachinePortRange'}, ++ 'type': 'array'}}, ++ 'required': ['ports'], ++ 'type': 'object'}, ++ 'MachinePortsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MachinePortsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'MergeLeadershipSettingsBulkParams': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/MergeLeadershipSettingsParam'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'MergeLeadershipSettingsParam': {'additionalProperties': False, ++ 'properties': {'application-tag': {'type': 'string'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['application-tag', ++ 'settings'], ++ 'type': 'object'}, ++ 'MeterStatusResult': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'type': 'string'}}, ++ 'required': ['code', 'info'], ++ 'type': 'object'}, ++ 'MeterStatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MeterStatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Metric': {'additionalProperties': False, ++ 'properties': {'key': {'type': 'string'}, ++ 'time': {'format': 'date-time', ++ 'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['key', 'value', 'time'], ++ 'type': 'object'}, ++ 'MetricBatch': {'additionalProperties': False, ++ 'properties': {'charm-url': {'type': 'string'}, ++ 'created': {'format': 'date-time', ++ 'type': 'string'}, ++ 'metrics': {'items': {'$ref': '#/definitions/Metric'}, ++ 'type': 'array'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['uuid', ++ 'charm-url', ++ 'created', ++ 'metrics'], ++ 'type': 'object'}, ++ 'MetricBatchParam': {'additionalProperties': False, ++ 'properties': {'batch': {'$ref': '#/definitions/MetricBatch'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'batch'], ++ 'type': 'object'}, ++ 'MetricBatchParams': {'additionalProperties': False, ++ 'properties': {'batches': {'items': {'$ref': '#/definitions/MetricBatchParam'}, ++ 'type': 'array'}}, ++ 'required': ['batches'], ++ 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', 'uuid'], ++ 'type': 'object'}, ++ 'NetworkConfig': {'additionalProperties': False, ++ 'properties': {'address': {'type': 'string'}, ++ 'cidr': {'type': 'string'}, ++ 'config-type': {'type': 'string'}, ++ 'device-index': {'type': 'integer'}, ++ 'disabled': {'type': 'boolean'}, ++ 'dns-search-domains': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'dns-servers': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'gateway-address': {'type': 'string'}, ++ 'interface-name': {'type': 'string'}, ++ 'interface-type': {'type': 'string'}, ++ 'mac-address': {'type': 'string'}, ++ 'mtu': {'type': 'integer'}, ++ 'no-auto-start': {'type': 'boolean'}, ++ 'parent-interface-name': {'type': 'string'}, ++ 'provider-address-id': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'provider-subnet-id': {'type': 'string'}, ++ 'provider-vlan-id': {'type': 'string'}, ++ 'routes': {'items': {'$ref': '#/definitions/NetworkRoute'}, ++ 'type': 'array'}, ++ 'vlan-tag': {'type': 'integer'}}, ++ 'required': ['device-index', ++ 'mac-address', ++ 'cidr', ++ 'mtu', ++ 'provider-id', ++ 'provider-subnet-id', ++ 'provider-space-id', ++ 'provider-address-id', ++ 'provider-vlan-id', ++ 'vlan-tag', ++ 'interface-name', ++ 'parent-interface-name', ++ 'interface-type', ++ 'disabled'], ++ 'type': 'object'}, ++ 'NetworkRoute': {'additionalProperties': False, ++ 'properties': {'destination-cidr': {'type': 'string'}, ++ 'gateway-ip': {'type': 'string'}, ++ 'metric': {'type': 'integer'}}, ++ 'required': ['destination-cidr', ++ 'gateway-ip', ++ 'metric'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'PortRange': {'additionalProperties': False, ++ 'properties': {'from-port': {'type': 'integer'}, ++ 'protocol': {'type': 'string'}, ++ 'to-port': {'type': 'integer'}}, ++ 'required': ['from-port', 'to-port', 'protocol'], ++ 'type': 'object'}, ++ 'RelationIds': {'additionalProperties': False, ++ 'properties': {'relation-ids': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['relation-ids'], ++ 'type': 'object'}, ++ 'RelationResult': {'additionalProperties': False, ++ 'properties': {'endpoint': {'$ref': '#/definitions/Endpoint'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'id': {'type': 'integer'}, ++ 'key': {'type': 'string'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life', ++ 'id', ++ 'key', ++ 'endpoint'], ++ 'type': 'object'}, ++ 'RelationResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'RelationUnit': {'additionalProperties': False, ++ 'properties': {'relation': {'type': 'string'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['relation', 'unit'], ++ 'type': 'object'}, ++ 'RelationUnitPair': {'additionalProperties': False, ++ 'properties': {'local-unit': {'type': 'string'}, ++ 'relation': {'type': 'string'}, ++ 'remote-unit': {'type': 'string'}}, ++ 'required': ['relation', ++ 'local-unit', ++ 'remote-unit'], ++ 'type': 'object'}, ++ 'RelationUnitPairs': {'additionalProperties': False, ++ 'properties': {'relation-unit-pairs': {'items': {'$ref': '#/definitions/RelationUnitPair'}, ++ 'type': 'array'}}, ++ 'required': ['relation-unit-pairs'], ++ 'type': 'object'}, ++ 'RelationUnitSettings': {'additionalProperties': False, ++ 'properties': {'relation': {'type': 'string'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['relation', ++ 'unit', ++ 'settings'], ++ 'type': 'object'}, ++ 'RelationUnits': {'additionalProperties': False, ++ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RelationUnit'}, ++ 'type': 'array'}}, ++ 'required': ['relation-units'], ++ 'type': 'object'}, ++ 'RelationUnitsChange': {'additionalProperties': False, ++ 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}}, ++ 'type': 'object'}, ++ 'departed': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['changed'], ++ 'type': 'object'}, ++ 'RelationUnitsSettings': {'additionalProperties': False, ++ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RelationUnitSettings'}, ++ 'type': 'array'}}, ++ 'required': ['relation-units'], ++ 'type': 'object'}, ++ 'RelationUnitsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id', ++ 'changes'], ++ 'type': 'object'}, ++ 'RelationUnitsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationUnitsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ResolvedModeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'mode': {'type': 'string'}}, ++ 'required': ['mode'], ++ 'type': 'object'}, ++ 'ResolvedModeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ResolvedModeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'SettingsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['settings'], ++ 'type': 'object'}, ++ 'SettingsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SettingsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StatusResult': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'id': {'type': 'string'}, ++ 'info': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['id', ++ 'life', ++ 'status', ++ 'info', ++ 'data', ++ 'since'], ++ 'type': 'object'}, ++ 'StatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StorageAddParams': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'storage': {'$ref': '#/definitions/StorageConstraints'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['unit', 'name', 'storage'], ++ 'type': 'object'}, ++ 'StorageAttachment': {'additionalProperties': False, ++ 'properties': {'kind': {'type': 'integer'}, ++ 'life': {'type': 'string'}, ++ 'location': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'storage-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['storage-tag', ++ 'owner-tag', ++ 'unit-tag', ++ 'kind', ++ 'location', ++ 'life'], ++ 'type': 'object'}, ++ 'StorageAttachmentId': {'additionalProperties': False, ++ 'properties': {'storage-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['storage-tag', ++ 'unit-tag'], ++ 'type': 'object'}, ++ 'StorageAttachmentIds': {'additionalProperties': False, ++ 'properties': {'ids': {'items': {'$ref': '#/definitions/StorageAttachmentId'}, ++ 'type': 'array'}}, ++ 'required': ['ids'], ++ 'type': 'object'}, ++ 'StorageAttachmentIdsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/StorageAttachmentIds'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StorageAttachmentIdsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StorageAttachmentIdsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StorageAttachmentResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/StorageAttachment'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StorageAttachmentResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StorageAttachmentResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StorageConstraints': {'additionalProperties': False, ++ 'properties': {'count': {'type': 'integer'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'StoragesAddParams': {'additionalProperties': False, ++ 'properties': {'storages': {'items': {'$ref': '#/definitions/StorageAddParams'}, ++ 'type': 'array'}}, ++ 'required': ['storages'], ++ 'type': 'object'}, ++ 'StringBoolResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'ok': {'type': 'boolean'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result', 'ok'], ++ 'type': 'object'}, ++ 'StringBoolResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringBoolResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'StringsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'UnitNetworkConfig': {'additionalProperties': False, ++ 'properties': {'binding-name': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['unit-tag', 'binding-name'], ++ 'type': 'object'}, ++ 'UnitNetworkConfigResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'items': {'$ref': '#/definitions/NetworkConfig'}, ++ 'type': 'array'}}, ++ 'required': ['info'], ++ 'type': 'object'}, ++ 'UnitNetworkConfigResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/UnitNetworkConfigResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'UnitSettings': {'additionalProperties': False, ++ 'properties': {'version': {'type': 'integer'}}, ++ 'required': ['version'], ++ 'type': 'object'}, ++ 'UnitsNetworkConfig': {'additionalProperties': False, ++ 'properties': {'args': {'items': {'$ref': '#/definitions/UnitNetworkConfig'}, ++ 'type': 'array'}}, ++ 'required': ['args'], ++ 'type': 'object'}}, ++ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}}, ++ 'type': 'object'}, ++ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}}, ++ 'type': 'object'}, ++ 'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}, ++ 'AddMetricBatches': {'properties': {'Params': {'$ref': '#/definitions/MetricBatchParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'AddUnitStorage': {'properties': {'Params': {'$ref': '#/definitions/StoragesAddParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'AllMachinePorts': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MachinePortsResults'}}, ++ 'type': 'object'}, ++ 'ApplicationStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ApplicationStatusResults'}}, ++ 'type': 'object'}, ++ 'AssignedMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'AvailabilityZone': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'BeginActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}}, ++ 'type': 'object'}, ++ 'CharmArchiveSha256': {'properties': {'Params': {'$ref': '#/definitions/CharmURLs'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'CharmModifiedVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/IntResults'}}, ++ 'type': 'object'}, ++ 'CharmURL': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringBoolResults'}}, ++ 'type': 'object'}, ++ 'ClearResolved': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ClosePorts': {'properties': {'Params': {'$ref': '#/definitions/EntitiesPortRanges'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ConfigSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ConfigSettingsResults'}}, ++ 'type': 'object'}, ++ 'CurrentModel': {'properties': {'Result': {'$ref': '#/definitions/ModelResult'}}, ++ 'type': 'object'}, ++ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'DestroyAllSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'DestroyUnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'EnterScope': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'FinishActions': {'properties': {'Params': {'$ref': '#/definitions/ActionExecutionResults'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'GetMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MeterStatusResults'}}, ++ 'type': 'object'}, ++ 'GetPrincipal': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringBoolResults'}}, ++ 'type': 'object'}, ++ 'HasSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/BoolResults'}}, ++ 'type': 'object'}, ++ 'JoinedRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsResults'}}, ++ 'type': 'object'}, ++ 'LeaveScope': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'Merge': {'properties': {'Params': {'$ref': '#/definitions/MergeLeadershipSettingsBulkParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'NetworkConfig': {'properties': {'Params': {'$ref': '#/definitions/UnitsNetworkConfig'}, ++ 'Result': {'$ref': '#/definitions/UnitNetworkConfigResults'}}, ++ 'type': 'object'}, ++ 'OpenPorts': {'properties': {'Params': {'$ref': '#/definitions/EntitiesPortRanges'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'ProviderType': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'Read': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/GetLeadershipSettingsBulkResults'}}, ++ 'type': 'object'}, ++ 'ReadRemoteSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnitPairs'}, ++ 'Result': {'$ref': '#/definitions/SettingsResults'}}, ++ 'type': 'object'}, ++ 'ReadSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/SettingsResults'}}, ++ 'type': 'object'}, ++ 'Relation': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/RelationResults'}}, ++ 'type': 'object'}, ++ 'RelationById': {'properties': {'Params': {'$ref': '#/definitions/RelationIds'}, ++ 'Result': {'$ref': '#/definitions/RelationResults'}}, ++ 'type': 'object'}, ++ 'RemoveStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'RequestReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Resolved': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ResolvedModeResults'}}, ++ 'type': 'object'}, ++ 'SetAgentStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetApplicationStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/EntitiesCharmURL'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetWorkloadVersion': {'properties': {'Params': {'$ref': '#/definitions/EntityWorkloadVersions'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'StorageAttachmentLife': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'StorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/StorageAttachmentResults'}}, ++ 'type': 'object'}, ++ 'UnitStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StatusResults'}}, ++ 'type': 'object'}, ++ 'UnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StorageAttachmentIdsResults'}}, ++ 'type': 'object'}, ++ 'UpdateSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnitsSettings'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchActionNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchApplicationRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchConfigSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchLeadershipSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchRelationUnits': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/RelationUnitsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchUnitAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchUnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WorkloadVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringsResult) ++ async def APIAddresses(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='APIAddresses', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(APIHostPortsResult) ++ async def APIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='APIHostPorts', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionResults) ++ async def Actions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Actions', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddMetricBatches(self, batches): ++ ''' ++ batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AddMetricBatches', version=4, params=_params) ++ _params['batches'] = batches ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddUnitStorage(self, storages): ++ ''' ++ storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AddUnitStorage', version=4, params=_params) ++ _params['storages'] = storages ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachinePortsResults) ++ async def AllMachinePorts(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AllMachinePorts', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationStatusResults) ++ async def ApplicationStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ApplicationStatusResult]<~ApplicationStatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ApplicationStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def AssignedMachine(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AssignedMachine', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def AvailabilityZone(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AvailabilityZone', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def BeginActions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='BeginActions', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BytesResult) ++ async def CACert(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CACert', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def CharmArchiveSha256(self, urls): ++ ''' ++ urls : typing.Sequence<+T_co>[~CharmURL]<~CharmURL> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CharmArchiveSha256', version=4, params=_params) ++ _params['urls'] = urls ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(IntResults) ++ async def CharmModifiedVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~IntResult]<~IntResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CharmModifiedVersion', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringBoolResults) ++ async def CharmURL(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CharmURL', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ClearResolved(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ClearResolved', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ClosePorts(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ClosePorts', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ConfigSettingsResults) ++ async def ConfigSettings(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ConfigSettingsResult]<~ConfigSettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ConfigSettings', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelResult) ++ async def CurrentModel(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CurrentModel', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Destroy(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Destroy', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DestroyAllSubordinates(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='DestroyAllSubordinates', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DestroyUnitStorageAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='DestroyUnitStorageAttachments', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnsureDead(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='EnsureDead', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnterScope(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='EnterScope', version=4, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def FinishActions(self, results): ++ ''' ++ results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='FinishActions', version=4, params=_params) ++ _params['results'] = results ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MeterStatusResults) ++ async def GetMeterStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='GetMeterStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringBoolResults) ++ async def GetPrincipal(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='GetPrincipal', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BoolResults) ++ async def HasSubordinates(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='HasSubordinates', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsResults) ++ async def JoinedRelations(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='JoinedRelations', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def LeaveScope(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='LeaveScope', version=4, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Life', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Merge(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~MergeLeadershipSettingsParam]<~MergeLeadershipSettingsParam> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Merge', version=4, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ModelConfig', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def ModelUUID(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ModelUUID', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(UnitNetworkConfigResults) ++ async def NetworkConfig(self, args): ++ ''' ++ args : typing.Sequence<+T_co>[~UnitNetworkConfig]<~UnitNetworkConfig> ++ Returns -> typing.Sequence<+T_co>[~UnitNetworkConfigResult]<~UnitNetworkConfigResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='NetworkConfig', version=4, params=_params) ++ _params['args'] = args ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def OpenPorts(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='OpenPorts', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def PrivateAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='PrivateAddress', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def ProviderType(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ProviderType', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def PublicAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='PublicAddress', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(GetLeadershipSettingsBulkResults) ++ async def Read(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~GetLeadershipSettingsResult]<~GetLeadershipSettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Read', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SettingsResults) ++ async def ReadRemoteSettings(self, relation_unit_pairs): ++ ''' ++ relation_unit_pairs : typing.Sequence<+T_co>[~RelationUnitPair]<~RelationUnitPair> ++ Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ReadRemoteSettings', version=4, params=_params) ++ _params['relation-unit-pairs'] = relation_unit_pairs ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SettingsResults) ++ async def ReadSettings(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ReadSettings', version=4, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RelationResults) ++ async def Relation(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Relation', version=4, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RelationResults) ++ async def RelationById(self, relation_ids): ++ ''' ++ relation_ids : typing.Sequence<+T_co>[int] ++ Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='RelationById', version=4, params=_params) ++ _params['relation-ids'] = relation_ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RemoveStorageAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='RemoveStorageAttachments', version=4, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RequestReboot(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='RequestReboot', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ResolvedModeResults) ++ async def Resolved(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ResolvedModeResult]<~ResolvedModeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Resolved', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetAgentStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetAgentStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetApplicationStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetApplicationStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetCharmURL(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityCharmURL]<~EntityCharmURL> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetCharmURL', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetUnitStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetUnitStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetWorkloadVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityWorkloadVersion]<~EntityWorkloadVersion> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetWorkloadVersion', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def StorageAttachmentLife(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='StorageAttachmentLife', version=4, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StorageAttachmentResults) ++ async def StorageAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~StorageAttachmentResult]<~StorageAttachmentResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='StorageAttachments', version=4, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusResults) ++ async def UnitStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='UnitStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StorageAttachmentIdsResults) ++ async def UnitStorageAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StorageAttachmentIdsResult]<~StorageAttachmentIdsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='UnitStorageAttachments', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateSettings(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnitSettings]<~RelationUnitSettings> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='UpdateSettings', version=4, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def Watch(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Watch', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchAPIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchAPIHostPorts', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchActionNotifications(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchActionNotifications', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchApplicationRelations(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchApplicationRelations', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchConfigSettings(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchConfigSettings', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForModelConfigChanges(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchForModelConfigChanges', version=4, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchLeadershipSettings(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchLeadershipSettings', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchMeterStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchMeterStatus', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RelationUnitsWatchResults) ++ async def WatchRelationUnits(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~RelationUnitsWatchResult]<~RelationUnitsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchRelationUnits', version=4, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchStorageAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchStorageAttachments', version=4, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchUnitAddresses(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchUnitAddresses', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchUnitStorageAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchUnitStorageAttachments', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def WorkloadVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WorkloadVersion', version=4, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ diff --cc modules/libjuju/juju/client/_client5.py index 0000000,0000000..22805ed new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/_client5.py @@@ -1,0 -1,0 +1,2654 @@@ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++from juju.client.facade import Type, ReturnMapping ++from juju.client._definitions import * ++ ++ ++class ApplicationFacade(Type): ++ name = 'Application' ++ version = 5 ++ schema = {'definitions': {'AddApplicationUnits': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'attach-storage': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'num-units', ++ 'placement'], ++ 'type': 'object'}, ++ 'AddApplicationUnitsResults': {'additionalProperties': False, ++ 'properties': {'units': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['units'], ++ 'type': 'object'}, ++ 'AddRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'AddRelationResults': {'additionalProperties': False, ++ 'properties': {'endpoints': {'patternProperties': {'.*': {'$ref': '#/definitions/CharmRelation'}}, ++ 'type': 'object'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelations': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationCharmRelationsResults': {'additionalProperties': False, ++ 'properties': {'charm-relations': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['charm-relations'], ++ 'type': 'object'}, ++ 'ApplicationDeploy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'attach-storage': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-yaml': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'endpoint-bindings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'num-units': {'type': 'integer'}, ++ 'placement': {'items': {'$ref': '#/definitions/Placement'}, ++ 'type': 'array'}, ++ 'resources': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'series': {'type': 'string'}, ++ 'storage': {'patternProperties': {'.*': {'$ref': '#/definitions/Constraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'series', ++ 'charm-url', ++ 'channel', ++ 'num-units', ++ 'config-yaml', ++ 'constraints'], ++ 'type': 'object'}, ++ 'ApplicationDestroy': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationExpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationGetResults': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm': {'type': 'string'}, ++ 'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'series': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm', ++ 'config', ++ 'constraints', ++ 'series'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredential': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'metrics-credentials': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['application', ++ 'metrics-credentials'], ++ 'type': 'object'}, ++ 'ApplicationMetricCredentials': {'additionalProperties': False, ++ 'properties': {'creds': {'items': {'$ref': '#/definitions/ApplicationMetricCredential'}, ++ 'type': 'array'}}, ++ 'required': ['creds'], ++ 'type': 'object'}, ++ 'ApplicationOffer': {'additionalProperties': False, ++ 'properties': {'access': {'type': 'string'}, ++ 'application-description': {'type': 'string'}, ++ 'bindings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'endpoints': {'items': {'$ref': '#/definitions/RemoteEndpoint'}, ++ 'type': 'array'}, ++ 'offer-name': {'type': 'string'}, ++ 'offer-url': {'type': 'string'}, ++ 'source-model-tag': {'type': 'string'}, ++ 'spaces': {'items': {'$ref': '#/definitions/RemoteSpace'}, ++ 'type': 'array'}}, ++ 'required': ['source-model-tag', ++ 'offer-url', ++ 'offer-name', ++ 'application-description', ++ 'endpoints', ++ 'spaces', ++ 'bindings', ++ 'access'], ++ 'type': 'object'}, ++ 'ApplicationSet': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationSetCharm': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'channel': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'config-settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'config-settings-yaml': {'type': 'string'}, ++ 'force-series': {'type': 'boolean'}, ++ 'force-units': {'type': 'boolean'}, ++ 'resource-ids': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'storage-constraints': {'patternProperties': {'.*': {'$ref': '#/definitions/StorageConstraints'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'channel', ++ 'force-units', ++ 'force-series'], ++ 'type': 'object'}, ++ 'ApplicationUnexpose': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'ApplicationUnset': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'options': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['application', 'options'], ++ 'type': 'object'}, ++ 'ApplicationUpdate': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'charm-url': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}, ++ 'force-charm-url': {'type': 'boolean'}, ++ 'force-series': {'type': 'boolean'}, ++ 'min-units': {'type': 'integer'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'settings-yaml': {'type': 'string'}}, ++ 'required': ['application', ++ 'charm-url', ++ 'force-charm-url', ++ 'force-series', ++ 'settings-yaml'], ++ 'type': 'object'}, ++ 'ApplicationsDeploy': {'additionalProperties': False, ++ 'properties': {'applications': {'items': {'$ref': '#/definitions/ApplicationDeploy'}, ++ 'type': 'array'}}, ++ 'required': ['applications'], ++ 'type': 'object'}, ++ 'CharmRelation': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'optional': {'type': 'boolean'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'optional', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'Constraints': {'additionalProperties': False, ++ 'properties': {'Count': {'type': 'integer'}, ++ 'Pool': {'type': 'string'}, ++ 'Size': {'type': 'integer'}}, ++ 'required': ['Pool', 'Size', 'Count'], ++ 'type': 'object'}, ++ 'ConsumeApplicationArg': {'additionalProperties': False, ++ 'properties': {'ApplicationOffer': {'$ref': '#/definitions/ApplicationOffer'}, ++ 'application-alias': {'type': 'string'}, ++ 'macaroon': {'$ref': '#/definitions/Macaroon'}}, ++ 'required': ['ApplicationOffer'], ++ 'type': 'object'}, ++ 'ConsumeApplicationArgs': {'additionalProperties': False, ++ 'properties': {'args': {'items': {'$ref': '#/definitions/ConsumeApplicationArg'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyApplicationInfo': {'additionalProperties': False, ++ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'destroyed-units': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyApplicationResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'$ref': '#/definitions/DestroyApplicationInfo'}}, ++ 'type': 'object'}, ++ 'DestroyApplicationResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyApplicationResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyApplicationUnits': {'additionalProperties': False, ++ 'properties': {'unit-names': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['unit-names'], ++ 'type': 'object'}, ++ 'DestroyRelation': {'additionalProperties': False, ++ 'properties': {'endpoints': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['endpoints'], ++ 'type': 'object'}, ++ 'DestroyUnitInfo': {'additionalProperties': False, ++ 'properties': {'destroyed-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}, ++ 'detached-storage': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'DestroyUnitResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'$ref': '#/definitions/DestroyUnitInfo'}}, ++ 'type': 'object'}, ++ 'DestroyUnitResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/DestroyUnitResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetApplicationConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}}, ++ 'required': ['application'], ++ 'type': 'object'}, ++ 'GetConstraintsResults': {'additionalProperties': False, ++ 'properties': {'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['constraints'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'Placement': {'additionalProperties': False, ++ 'properties': {'directive': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['scope', 'directive'], ++ 'type': 'object'}, ++ 'RemoteEndpoint': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'RemoteSpace': {'additionalProperties': False, ++ 'properties': {'cloud-type': {'type': 'string'}, ++ 'name': {'type': 'string'}, ++ 'provider-attributes': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'provider-id': {'type': 'string'}, ++ 'subnets': {'items': {'$ref': '#/definitions/Subnet'}, ++ 'type': 'array'}}, ++ 'required': ['cloud-type', ++ 'name', ++ 'provider-id', ++ 'provider-attributes', ++ 'subnets'], ++ 'type': 'object'}, ++ 'SetConstraints': {'additionalProperties': False, ++ 'properties': {'application': {'type': 'string'}, ++ 'constraints': {'$ref': '#/definitions/Value'}}, ++ 'required': ['application', 'constraints'], ++ 'type': 'object'}, ++ 'StorageConstraints': {'additionalProperties': False, ++ 'properties': {'count': {'type': 'integer'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'Subnet': {'additionalProperties': False, ++ 'properties': {'cidr': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'provider-id': {'type': 'string'}, ++ 'provider-network-id': {'type': 'string'}, ++ 'provider-space-id': {'type': 'string'}, ++ 'space-tag': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'vlan-tag': {'type': 'integer'}, ++ 'zones': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['cidr', ++ 'vlan-tag', ++ 'life', ++ 'space-tag', ++ 'zones'], ++ 'type': 'object'}, ++ 'Value': {'additionalProperties': False, ++ 'properties': {'arch': {'type': 'string'}, ++ 'container': {'type': 'string'}, ++ 'cores': {'type': 'integer'}, ++ 'cpu-power': {'type': 'integer'}, ++ 'instance-type': {'type': 'string'}, ++ 'mem': {'type': 'integer'}, ++ 'root-disk': {'type': 'integer'}, ++ 'spaces': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'tags': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'virt-type': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'properties': {'AddRelation': {'properties': {'Params': {'$ref': '#/definitions/AddRelation'}, ++ 'Result': {'$ref': '#/definitions/AddRelationResults'}}, ++ 'type': 'object'}, ++ 'AddUnits': {'properties': {'Params': {'$ref': '#/definitions/AddApplicationUnits'}, ++ 'Result': {'$ref': '#/definitions/AddApplicationUnitsResults'}}, ++ 'type': 'object'}, ++ 'CharmRelations': {'properties': {'Params': {'$ref': '#/definitions/ApplicationCharmRelations'}, ++ 'Result': {'$ref': '#/definitions/ApplicationCharmRelationsResults'}}, ++ 'type': 'object'}, ++ 'Consume': {'properties': {'Params': {'$ref': '#/definitions/ConsumeApplicationArgs'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Deploy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationsDeploy'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/ApplicationDestroy'}}, ++ 'type': 'object'}, ++ 'DestroyApplication': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/DestroyApplicationResults'}}, ++ 'type': 'object'}, ++ 'DestroyRelation': {'properties': {'Params': {'$ref': '#/definitions/DestroyRelation'}}, ++ 'type': 'object'}, ++ 'DestroyUnit': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/DestroyUnitResults'}}, ++ 'type': 'object'}, ++ 'DestroyUnits': {'properties': {'Params': {'$ref': '#/definitions/DestroyApplicationUnits'}}, ++ 'type': 'object'}, ++ 'Expose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationExpose'}}, ++ 'type': 'object'}, ++ 'Get': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/ApplicationGetResults'}}, ++ 'type': 'object'}, ++ 'GetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/ApplicationGet'}, ++ 'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'GetConstraints': {'properties': {'Params': {'$ref': '#/definitions/GetApplicationConstraints'}, ++ 'Result': {'$ref': '#/definitions/GetConstraintsResults'}}, ++ 'type': 'object'}, ++ 'Set': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSet'}}, ++ 'type': 'object'}, ++ 'SetCharm': {'properties': {'Params': {'$ref': '#/definitions/ApplicationSetCharm'}}, ++ 'type': 'object'}, ++ 'SetConstraints': {'properties': {'Params': {'$ref': '#/definitions/SetConstraints'}}, ++ 'type': 'object'}, ++ 'SetMetricCredentials': {'properties': {'Params': {'$ref': '#/definitions/ApplicationMetricCredentials'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Unexpose': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnexpose'}}, ++ 'type': 'object'}, ++ 'Unset': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUnset'}}, ++ 'type': 'object'}, ++ 'Update': {'properties': {'Params': {'$ref': '#/definitions/ApplicationUpdate'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(AddRelationResults) ++ async def AddRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddRelation', version=5, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(AddApplicationUnitsResults) ++ async def AddUnits(self, application, num_units, placement): ++ ''' ++ application : str ++ num_units : int ++ placement : typing.Sequence<+T_co>[~Placement]<~Placement> ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='AddUnits', version=5, params=_params) ++ _params['application'] = application ++ _params['num-units'] = num_units ++ _params['placement'] = placement ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationCharmRelationsResults) ++ async def CharmRelations(self, application): ++ ''' ++ application : str ++ Returns -> typing.Sequence<+T_co>[str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='CharmRelations', version=5, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Consume(self, args): ++ ''' ++ args : typing.Sequence<+T_co>[~ConsumeApplicationArg]<~ConsumeApplicationArg> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Consume', version=5, params=_params) ++ _params['args'] = args ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Deploy(self, applications): ++ ''' ++ applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Deploy', version=5, params=_params) ++ _params['applications'] = applications ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Destroy(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Destroy', version=5, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DestroyApplicationResults) ++ async def DestroyApplication(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~DestroyApplicationResult]<~DestroyApplicationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyApplication', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyRelation(self, endpoints): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyRelation', version=5, params=_params) ++ _params['endpoints'] = endpoints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(DestroyUnitResults) ++ async def DestroyUnit(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~DestroyUnitResult]<~DestroyUnitResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyUnit', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def DestroyUnits(self, unit_names): ++ ''' ++ unit_names : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='DestroyUnits', version=5, params=_params) ++ _params['unit-names'] = unit_names ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Expose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Expose', version=5, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationGetResults) ++ async def Get(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[str, typing.Mapping<~KT, +VT_co>[str, typing.Any], _ForwardRef('Value')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Get', version=5, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def GetCharmURL(self, application): ++ ''' ++ application : str ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetCharmURL', version=5, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(GetConstraintsResults) ++ async def GetConstraints(self, application): ++ ''' ++ application : str ++ Returns -> Value ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='GetConstraints', version=5, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Set(self, application, options): ++ ''' ++ application : str ++ options : typing.Mapping<~KT, +VT_co>[str, str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Set', version=5, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetCharm(self, application, channel, charm_url, config_settings, config_settings_yaml, force_series, force_units, resource_ids, storage_constraints): ++ ''' ++ application : str ++ channel : str ++ charm_url : str ++ config_settings : typing.Mapping<~KT, +VT_co>[str, str] ++ config_settings_yaml : str ++ force_series : bool ++ force_units : bool ++ resource_ids : typing.Mapping<~KT, +VT_co>[str, str] ++ storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints> ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetCharm', version=5, params=_params) ++ _params['application'] = application ++ _params['channel'] = channel ++ _params['charm-url'] = charm_url ++ _params['config-settings'] = config_settings ++ _params['config-settings-yaml'] = config_settings_yaml ++ _params['force-series'] = force_series ++ _params['force-units'] = force_units ++ _params['resource-ids'] = resource_ids ++ _params['storage-constraints'] = storage_constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def SetConstraints(self, application, constraints): ++ ''' ++ application : str ++ constraints : Value ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetConstraints', version=5, params=_params) ++ _params['application'] = application ++ _params['constraints'] = constraints ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetMetricCredentials(self, creds): ++ ''' ++ creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='SetMetricCredentials', version=5, params=_params) ++ _params['creds'] = creds ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unexpose(self, application): ++ ''' ++ application : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unexpose', version=5, params=_params) ++ _params['application'] = application ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Unset(self, application, options): ++ ''' ++ application : str ++ options : typing.Sequence<+T_co>[str] ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Unset', version=5, params=_params) ++ _params['application'] = application ++ _params['options'] = options ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(None) ++ async def Update(self, application, charm_url, constraints, force_charm_url, force_series, min_units, settings, settings_yaml): ++ ''' ++ application : str ++ charm_url : str ++ constraints : Value ++ force_charm_url : bool ++ force_series : bool ++ min_units : int ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ settings_yaml : str ++ Returns -> None ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Application', request='Update', version=5, params=_params) ++ _params['application'] = application ++ _params['charm-url'] = charm_url ++ _params['constraints'] = constraints ++ _params['force-charm-url'] = force_charm_url ++ _params['force-series'] = force_series ++ _params['min-units'] = min_units ++ _params['settings'] = settings ++ _params['settings-yaml'] = settings_yaml ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++class UniterFacade(Type): ++ name = 'Uniter' ++ version = 5 ++ schema = {'definitions': {'APIHostPortsResult': {'additionalProperties': False, ++ 'properties': {'servers': {'items': {'items': {'$ref': '#/definitions/HostPort'}, ++ 'type': 'array'}, ++ 'type': 'array'}}, ++ 'required': ['servers'], ++ 'type': 'object'}, ++ 'Action': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'parameters': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'receiver': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'receiver', 'name'], ++ 'type': 'object'}, ++ 'ActionExecutionResult': {'additionalProperties': False, ++ 'properties': {'action-tag': {'type': 'string'}, ++ 'message': {'type': 'string'}, ++ 'results': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['action-tag', 'status'], ++ 'type': 'object'}, ++ 'ActionExecutionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionExecutionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'ActionResult': {'additionalProperties': False, ++ 'properties': {'action': {'$ref': '#/definitions/Action'}, ++ 'completed': {'format': 'date-time', ++ 'type': 'string'}, ++ 'enqueued': {'format': 'date-time', ++ 'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'message': {'type': 'string'}, ++ 'output': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'started': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ActionResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ActionResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'Address': {'additionalProperties': False, ++ 'properties': {'scope': {'type': 'string'}, ++ 'space-name': {'type': 'string'}, ++ 'type': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'type', 'scope'], ++ 'type': 'object'}, ++ 'ApplicationStatusResult': {'additionalProperties': False, ++ 'properties': {'application': {'$ref': '#/definitions/StatusResult'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'units': {'patternProperties': {'.*': {'$ref': '#/definitions/StatusResult'}}, ++ 'type': 'object'}}, ++ 'required': ['application', ++ 'units'], ++ 'type': 'object'}, ++ 'ApplicationStatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ApplicationStatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'BoolResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'boolean'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'BoolResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/BoolResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'BytesResult': {'additionalProperties': False, ++ 'properties': {'result': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'CharmRelation': {'additionalProperties': False, ++ 'properties': {'interface': {'type': 'string'}, ++ 'limit': {'type': 'integer'}, ++ 'name': {'type': 'string'}, ++ 'optional': {'type': 'boolean'}, ++ 'role': {'type': 'string'}, ++ 'scope': {'type': 'string'}}, ++ 'required': ['name', ++ 'role', ++ 'interface', ++ 'optional', ++ 'limit', ++ 'scope'], ++ 'type': 'object'}, ++ 'CharmURL': {'additionalProperties': False, ++ 'properties': {'url': {'type': 'string'}}, ++ 'required': ['url'], ++ 'type': 'object'}, ++ 'CharmURLs': {'additionalProperties': False, ++ 'properties': {'urls': {'items': {'$ref': '#/definitions/CharmURL'}, ++ 'type': 'array'}}, ++ 'required': ['urls'], ++ 'type': 'object'}, ++ 'ConfigSettingsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'settings': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['settings'], ++ 'type': 'object'}, ++ 'ConfigSettingsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ConfigSettingsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Endpoint': {'additionalProperties': False, ++ 'properties': {'application-name': {'type': 'string'}, ++ 'relation': {'$ref': '#/definitions/CharmRelation'}}, ++ 'required': ['application-name', 'relation'], ++ 'type': 'object'}, ++ 'Entities': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/Entity'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'EntitiesCharmURL': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityCharmURL'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'EntitiesPortRanges': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityPortRange'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Entity': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}}, ++ 'required': ['tag'], ++ 'type': 'object'}, ++ 'EntityCharmURL': {'additionalProperties': False, ++ 'properties': {'charm-url': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'charm-url'], ++ 'type': 'object'}, ++ 'EntityPortRange': {'additionalProperties': False, ++ 'properties': {'from-port': {'type': 'integer'}, ++ 'protocol': {'type': 'string'}, ++ 'tag': {'type': 'string'}, ++ 'to-port': {'type': 'integer'}}, ++ 'required': ['tag', ++ 'protocol', ++ 'from-port', ++ 'to-port'], ++ 'type': 'object'}, ++ 'EntityStatusArgs': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'info': {'type': 'string'}, ++ 'status': {'type': 'string'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', ++ 'status', ++ 'info', ++ 'data'], ++ 'type': 'object'}, ++ 'EntityWorkloadVersion': {'additionalProperties': False, ++ 'properties': {'tag': {'type': 'string'}, ++ 'workload-version': {'type': 'string'}}, ++ 'required': ['tag', ++ 'workload-version'], ++ 'type': 'object'}, ++ 'EntityWorkloadVersions': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityWorkloadVersion'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'Error': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'info': {'$ref': '#/definitions/ErrorInfo'}, ++ 'message': {'type': 'string'}}, ++ 'required': ['message', 'code'], ++ 'type': 'object'}, ++ 'ErrorInfo': {'additionalProperties': False, ++ 'properties': {'macaroon': {'$ref': '#/definitions/Macaroon'}, ++ 'macaroon-path': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'ErrorResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}}, ++ 'type': 'object'}, ++ 'ErrorResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ErrorResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetLeadershipSettingsBulkResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/GetLeadershipSettingsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'GetLeadershipSettingsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['settings'], ++ 'type': 'object'}, ++ 'HostPort': {'additionalProperties': False, ++ 'properties': {'Address': {'$ref': '#/definitions/Address'}, ++ 'port': {'type': 'integer'}}, ++ 'required': ['Address', 'port'], ++ 'type': 'object'}, ++ 'IntResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'integer'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'IntResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/IntResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'InterfaceAddress': {'additionalProperties': False, ++ 'properties': {'cidr': {'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['value', 'cidr'], ++ 'type': 'object'}, ++ 'LifeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life'], ++ 'type': 'object'}, ++ 'LifeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/LifeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Macaroon': {'additionalProperties': False, 'type': 'object'}, ++ 'MachinePortRange': {'additionalProperties': False, ++ 'properties': {'port-range': {'$ref': '#/definitions/PortRange'}, ++ 'relation-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['unit-tag', ++ 'relation-tag', ++ 'port-range'], ++ 'type': 'object'}, ++ 'MachinePortsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'ports': {'items': {'$ref': '#/definitions/MachinePortRange'}, ++ 'type': 'array'}}, ++ 'required': ['ports'], ++ 'type': 'object'}, ++ 'MachinePortsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MachinePortsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'MergeLeadershipSettingsBulkParams': {'additionalProperties': False, ++ 'properties': {'params': {'items': {'$ref': '#/definitions/MergeLeadershipSettingsParam'}, ++ 'type': 'array'}}, ++ 'required': ['params'], ++ 'type': 'object'}, ++ 'MergeLeadershipSettingsParam': {'additionalProperties': False, ++ 'properties': {'application-tag': {'type': 'string'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['application-tag', ++ 'settings'], ++ 'type': 'object'}, ++ 'MeterStatusResult': {'additionalProperties': False, ++ 'properties': {'code': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'info': {'type': 'string'}}, ++ 'required': ['code', 'info'], ++ 'type': 'object'}, ++ 'MeterStatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/MeterStatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'Metric': {'additionalProperties': False, ++ 'properties': {'key': {'type': 'string'}, ++ 'time': {'format': 'date-time', ++ 'type': 'string'}, ++ 'value': {'type': 'string'}}, ++ 'required': ['key', 'value', 'time'], ++ 'type': 'object'}, ++ 'MetricBatch': {'additionalProperties': False, ++ 'properties': {'charm-url': {'type': 'string'}, ++ 'created': {'format': 'date-time', ++ 'type': 'string'}, ++ 'metrics': {'items': {'$ref': '#/definitions/Metric'}, ++ 'type': 'array'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['uuid', ++ 'charm-url', ++ 'created', ++ 'metrics'], ++ 'type': 'object'}, ++ 'MetricBatchParam': {'additionalProperties': False, ++ 'properties': {'batch': {'$ref': '#/definitions/MetricBatch'}, ++ 'tag': {'type': 'string'}}, ++ 'required': ['tag', 'batch'], ++ 'type': 'object'}, ++ 'MetricBatchParams': {'additionalProperties': False, ++ 'properties': {'batches': {'items': {'$ref': '#/definitions/MetricBatchParam'}, ++ 'type': 'array'}}, ++ 'required': ['batches'], ++ 'type': 'object'}, ++ 'ModelConfigResult': {'additionalProperties': False, ++ 'properties': {'config': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}}, ++ 'required': ['config'], ++ 'type': 'object'}, ++ 'ModelResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'name': {'type': 'string'}, ++ 'uuid': {'type': 'string'}}, ++ 'required': ['name', 'uuid'], ++ 'type': 'object'}, ++ 'NetworkInfo': {'additionalProperties': False, ++ 'properties': {'addresses': {'items': {'$ref': '#/definitions/InterfaceAddress'}, ++ 'type': 'array'}, ++ 'interface-name': {'type': 'string'}, ++ 'mac-address': {'type': 'string'}}, ++ 'required': ['mac-address', ++ 'interface-name', ++ 'addresses'], ++ 'type': 'object'}, ++ 'NetworkInfoParams': {'additionalProperties': False, ++ 'properties': {'bindings': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['unit', 'bindings'], ++ 'type': 'object'}, ++ 'NetworkInfoResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'network-info': {'items': {'$ref': '#/definitions/NetworkInfo'}, ++ 'type': 'array'}}, ++ 'required': ['network-info'], ++ 'type': 'object'}, ++ 'NetworkInfoResults': {'additionalProperties': False, ++ 'properties': {'results': {'patternProperties': {'.*': {'$ref': '#/definitions/NetworkInfoResult'}}, ++ 'type': 'object'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'NotifyWatchResult': {'additionalProperties': False, ++ 'properties': {'NotifyWatcherId': {'type': 'string'}, ++ 'error': {'$ref': '#/definitions/Error'}}, ++ 'required': ['NotifyWatcherId'], ++ 'type': 'object'}, ++ 'NotifyWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/NotifyWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'PortRange': {'additionalProperties': False, ++ 'properties': {'from-port': {'type': 'integer'}, ++ 'protocol': {'type': 'string'}, ++ 'to-port': {'type': 'integer'}}, ++ 'required': ['from-port', 'to-port', 'protocol'], ++ 'type': 'object'}, ++ 'RelationIds': {'additionalProperties': False, ++ 'properties': {'relation-ids': {'items': {'type': 'integer'}, ++ 'type': 'array'}}, ++ 'required': ['relation-ids'], ++ 'type': 'object'}, ++ 'RelationResult': {'additionalProperties': False, ++ 'properties': {'endpoint': {'$ref': '#/definitions/Endpoint'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'id': {'type': 'integer'}, ++ 'key': {'type': 'string'}, ++ 'life': {'type': 'string'}}, ++ 'required': ['life', ++ 'id', ++ 'key', ++ 'endpoint'], ++ 'type': 'object'}, ++ 'RelationResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'RelationUnit': {'additionalProperties': False, ++ 'properties': {'relation': {'type': 'string'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['relation', 'unit'], ++ 'type': 'object'}, ++ 'RelationUnitPair': {'additionalProperties': False, ++ 'properties': {'local-unit': {'type': 'string'}, ++ 'relation': {'type': 'string'}, ++ 'remote-unit': {'type': 'string'}}, ++ 'required': ['relation', ++ 'local-unit', ++ 'remote-unit'], ++ 'type': 'object'}, ++ 'RelationUnitPairs': {'additionalProperties': False, ++ 'properties': {'relation-unit-pairs': {'items': {'$ref': '#/definitions/RelationUnitPair'}, ++ 'type': 'array'}}, ++ 'required': ['relation-unit-pairs'], ++ 'type': 'object'}, ++ 'RelationUnitSettings': {'additionalProperties': False, ++ 'properties': {'relation': {'type': 'string'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['relation', ++ 'unit', ++ 'settings'], ++ 'type': 'object'}, ++ 'RelationUnits': {'additionalProperties': False, ++ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RelationUnit'}, ++ 'type': 'array'}}, ++ 'required': ['relation-units'], ++ 'type': 'object'}, ++ 'RelationUnitsChange': {'additionalProperties': False, ++ 'properties': {'changed': {'patternProperties': {'.*': {'$ref': '#/definitions/UnitSettings'}}, ++ 'type': 'object'}, ++ 'departed': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'required': ['changed'], ++ 'type': 'object'}, ++ 'RelationUnitsSettings': {'additionalProperties': False, ++ 'properties': {'relation-units': {'items': {'$ref': '#/definitions/RelationUnitSettings'}, ++ 'type': 'array'}}, ++ 'required': ['relation-units'], ++ 'type': 'object'}, ++ 'RelationUnitsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'$ref': '#/definitions/RelationUnitsChange'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id', ++ 'changes'], ++ 'type': 'object'}, ++ 'RelationUnitsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/RelationUnitsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'ResolvedModeResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'mode': {'type': 'string'}}, ++ 'required': ['mode'], ++ 'type': 'object'}, ++ 'ResolvedModeResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/ResolvedModeResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'SetStatus': {'additionalProperties': False, ++ 'properties': {'entities': {'items': {'$ref': '#/definitions/EntityStatusArgs'}, ++ 'type': 'array'}}, ++ 'required': ['entities'], ++ 'type': 'object'}, ++ 'SettingsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'settings': {'patternProperties': {'.*': {'type': 'string'}}, ++ 'type': 'object'}}, ++ 'required': ['settings'], ++ 'type': 'object'}, ++ 'SettingsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/SettingsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StatusResult': {'additionalProperties': False, ++ 'properties': {'data': {'patternProperties': {'.*': {'additionalProperties': True, ++ 'type': 'object'}}, ++ 'type': 'object'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'id': {'type': 'string'}, ++ 'info': {'type': 'string'}, ++ 'life': {'type': 'string'}, ++ 'since': {'format': 'date-time', ++ 'type': 'string'}, ++ 'status': {'type': 'string'}}, ++ 'required': ['id', ++ 'life', ++ 'status', ++ 'info', ++ 'data', ++ 'since'], ++ 'type': 'object'}, ++ 'StatusResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StatusResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StorageAddParams': {'additionalProperties': False, ++ 'properties': {'name': {'type': 'string'}, ++ 'storage': {'$ref': '#/definitions/StorageConstraints'}, ++ 'unit': {'type': 'string'}}, ++ 'required': ['unit', 'name', 'storage'], ++ 'type': 'object'}, ++ 'StorageAttachment': {'additionalProperties': False, ++ 'properties': {'kind': {'type': 'integer'}, ++ 'life': {'type': 'string'}, ++ 'location': {'type': 'string'}, ++ 'owner-tag': {'type': 'string'}, ++ 'storage-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['storage-tag', ++ 'owner-tag', ++ 'unit-tag', ++ 'kind', ++ 'location', ++ 'life'], ++ 'type': 'object'}, ++ 'StorageAttachmentId': {'additionalProperties': False, ++ 'properties': {'storage-tag': {'type': 'string'}, ++ 'unit-tag': {'type': 'string'}}, ++ 'required': ['storage-tag', ++ 'unit-tag'], ++ 'type': 'object'}, ++ 'StorageAttachmentIds': {'additionalProperties': False, ++ 'properties': {'ids': {'items': {'$ref': '#/definitions/StorageAttachmentId'}, ++ 'type': 'array'}}, ++ 'required': ['ids'], ++ 'type': 'object'}, ++ 'StorageAttachmentIdsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/StorageAttachmentIds'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StorageAttachmentIdsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StorageAttachmentIdsResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StorageAttachmentResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'$ref': '#/definitions/StorageAttachment'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StorageAttachmentResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StorageAttachmentResult'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StorageConstraints': {'additionalProperties': False, ++ 'properties': {'count': {'type': 'integer'}, ++ 'pool': {'type': 'string'}, ++ 'size': {'type': 'integer'}}, ++ 'type': 'object'}, ++ 'StoragesAddParams': {'additionalProperties': False, ++ 'properties': {'storages': {'items': {'$ref': '#/definitions/StorageAddParams'}, ++ 'type': 'array'}}, ++ 'required': ['storages'], ++ 'type': 'object'}, ++ 'StringBoolResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'ok': {'type': 'boolean'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result', 'ok'], ++ 'type': 'object'}, ++ 'StringBoolResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringBoolResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'type': 'string'}}, ++ 'required': ['result'], ++ 'type': 'object'}, ++ 'StringResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsResult': {'additionalProperties': False, ++ 'properties': {'error': {'$ref': '#/definitions/Error'}, ++ 'result': {'items': {'type': 'string'}, ++ 'type': 'array'}}, ++ 'type': 'object'}, ++ 'StringsResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'StringsWatchResult': {'additionalProperties': False, ++ 'properties': {'changes': {'items': {'type': 'string'}, ++ 'type': 'array'}, ++ 'error': {'$ref': '#/definitions/Error'}, ++ 'watcher-id': {'type': 'string'}}, ++ 'required': ['watcher-id'], ++ 'type': 'object'}, ++ 'StringsWatchResults': {'additionalProperties': False, ++ 'properties': {'results': {'items': {'$ref': '#/definitions/StringsWatchResult'}, ++ 'type': 'array'}}, ++ 'required': ['results'], ++ 'type': 'object'}, ++ 'UnitSettings': {'additionalProperties': False, ++ 'properties': {'version': {'type': 'integer'}}, ++ 'required': ['version'], ++ 'type': 'object'}}, ++ 'properties': {'APIAddresses': {'properties': {'Result': {'$ref': '#/definitions/StringsResult'}}, ++ 'type': 'object'}, ++ 'APIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/APIHostPortsResult'}}, ++ 'type': 'object'}, ++ 'Actions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ActionResults'}}, ++ 'type': 'object'}, ++ 'AddMetricBatches': {'properties': {'Params': {'$ref': '#/definitions/MetricBatchParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'AddUnitStorage': {'properties': {'Params': {'$ref': '#/definitions/StoragesAddParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'AllMachinePorts': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MachinePortsResults'}}, ++ 'type': 'object'}, ++ 'ApplicationStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ApplicationStatusResults'}}, ++ 'type': 'object'}, ++ 'AssignedMachine': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'AvailabilityZone': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'BeginActions': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'CACert': {'properties': {'Result': {'$ref': '#/definitions/BytesResult'}}, ++ 'type': 'object'}, ++ 'CharmArchiveSha256': {'properties': {'Params': {'$ref': '#/definitions/CharmURLs'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'CharmModifiedVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/IntResults'}}, ++ 'type': 'object'}, ++ 'CharmURL': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringBoolResults'}}, ++ 'type': 'object'}, ++ 'ClearResolved': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ClosePorts': {'properties': {'Params': {'$ref': '#/definitions/EntitiesPortRanges'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ConfigSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ConfigSettingsResults'}}, ++ 'type': 'object'}, ++ 'CurrentModel': {'properties': {'Result': {'$ref': '#/definitions/ModelResult'}}, ++ 'type': 'object'}, ++ 'Destroy': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'DestroyAllSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'DestroyUnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'EnsureDead': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'EnterScope': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'FinishActions': {'properties': {'Params': {'$ref': '#/definitions/ActionExecutionResults'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'GetMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/MeterStatusResults'}}, ++ 'type': 'object'}, ++ 'GetPrincipal': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringBoolResults'}}, ++ 'type': 'object'}, ++ 'HasSubordinates': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/BoolResults'}}, ++ 'type': 'object'}, ++ 'JoinedRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsResults'}}, ++ 'type': 'object'}, ++ 'LeaveScope': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Life': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'Merge': {'properties': {'Params': {'$ref': '#/definitions/MergeLeadershipSettingsBulkParams'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'ModelConfig': {'properties': {'Result': {'$ref': '#/definitions/ModelConfigResult'}}, ++ 'type': 'object'}, ++ 'ModelUUID': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'NetworkInfo': {'properties': {'Params': {'$ref': '#/definitions/NetworkInfoParams'}, ++ 'Result': {'$ref': '#/definitions/NetworkInfoResults'}}, ++ 'type': 'object'}, ++ 'OpenPorts': {'properties': {'Params': {'$ref': '#/definitions/EntitiesPortRanges'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'PrivateAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'ProviderType': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'PublicAddress': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}, ++ 'Read': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/GetLeadershipSettingsBulkResults'}}, ++ 'type': 'object'}, ++ 'ReadRemoteSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnitPairs'}, ++ 'Result': {'$ref': '#/definitions/SettingsResults'}}, ++ 'type': 'object'}, ++ 'ReadSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/SettingsResults'}}, ++ 'type': 'object'}, ++ 'Relation': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/RelationResults'}}, ++ 'type': 'object'}, ++ 'RelationById': {'properties': {'Params': {'$ref': '#/definitions/RelationIds'}, ++ 'Result': {'$ref': '#/definitions/RelationResults'}}, ++ 'type': 'object'}, ++ 'RemoveStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'RequestReboot': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Resolved': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/ResolvedModeResults'}}, ++ 'type': 'object'}, ++ 'SLALevel': {'properties': {'Result': {'$ref': '#/definitions/StringResult'}}, ++ 'type': 'object'}, ++ 'SetAgentStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetApplicationStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetCharmURL': {'properties': {'Params': {'$ref': '#/definitions/EntitiesCharmURL'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetUnitStatus': {'properties': {'Params': {'$ref': '#/definitions/SetStatus'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'SetWorkloadVersion': {'properties': {'Params': {'$ref': '#/definitions/EntityWorkloadVersions'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'StorageAttachmentLife': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/LifeResults'}}, ++ 'type': 'object'}, ++ 'StorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/StorageAttachmentResults'}}, ++ 'type': 'object'}, ++ 'UnitStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StatusResults'}}, ++ 'type': 'object'}, ++ 'UnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StorageAttachmentIdsResults'}}, ++ 'type': 'object'}, ++ 'UpdateSettings': {'properties': {'Params': {'$ref': '#/definitions/RelationUnitsSettings'}, ++ 'Result': {'$ref': '#/definitions/ErrorResults'}}, ++ 'type': 'object'}, ++ 'Watch': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchAPIHostPorts': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchActionNotifications': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchConfigSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchForModelConfigChanges': {'properties': {'Result': {'$ref': '#/definitions/NotifyWatchResult'}}, ++ 'type': 'object'}, ++ 'WatchLeadershipSettings': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchMeterStatus': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchRelationUnits': {'properties': {'Params': {'$ref': '#/definitions/RelationUnits'}, ++ 'Result': {'$ref': '#/definitions/RelationUnitsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/StorageAttachmentIds'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchUnitAddresses': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/NotifyWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchUnitRelations': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WatchUnitStorageAttachments': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringsWatchResults'}}, ++ 'type': 'object'}, ++ 'WorkloadVersion': {'properties': {'Params': {'$ref': '#/definitions/Entities'}, ++ 'Result': {'$ref': '#/definitions/StringResults'}}, ++ 'type': 'object'}}, ++ 'type': 'object'} ++ ++ ++ @ReturnMapping(StringsResult) ++ async def APIAddresses(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), typing.Sequence<+T_co>[str]] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='APIAddresses', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(APIHostPortsResult) ++ async def APIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[~HostPort]<~HostPort> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='APIHostPorts', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ActionResults) ++ async def Actions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Actions', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddMetricBatches(self, batches): ++ ''' ++ batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AddMetricBatches', version=5, params=_params) ++ _params['batches'] = batches ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def AddUnitStorage(self, storages): ++ ''' ++ storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AddUnitStorage', version=5, params=_params) ++ _params['storages'] = storages ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MachinePortsResults) ++ async def AllMachinePorts(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AllMachinePorts', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ApplicationStatusResults) ++ async def ApplicationStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ApplicationStatusResult]<~ApplicationStatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ApplicationStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def AssignedMachine(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AssignedMachine', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def AvailabilityZone(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='AvailabilityZone', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def BeginActions(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='BeginActions', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BytesResult) ++ async def CACert(self): ++ ''' ++ ++ Returns -> typing.Sequence<+T_co>[int] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CACert', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def CharmArchiveSha256(self, urls): ++ ''' ++ urls : typing.Sequence<+T_co>[~CharmURL]<~CharmURL> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CharmArchiveSha256', version=5, params=_params) ++ _params['urls'] = urls ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(IntResults) ++ async def CharmModifiedVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~IntResult]<~IntResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CharmModifiedVersion', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringBoolResults) ++ async def CharmURL(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CharmURL', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ClearResolved(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ClearResolved', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def ClosePorts(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ClosePorts', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ConfigSettingsResults) ++ async def ConfigSettings(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ConfigSettingsResult]<~ConfigSettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ConfigSettings', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelResult) ++ async def CurrentModel(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='CurrentModel', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Destroy(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Destroy', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DestroyAllSubordinates(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='DestroyAllSubordinates', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def DestroyUnitStorageAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='DestroyUnitStorageAttachments', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnsureDead(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='EnsureDead', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def EnterScope(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='EnterScope', version=5, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def FinishActions(self, results): ++ ''' ++ results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='FinishActions', version=5, params=_params) ++ _params['results'] = results ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(MeterStatusResults) ++ async def GetMeterStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='GetMeterStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringBoolResults) ++ async def GetPrincipal(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='GetPrincipal', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(BoolResults) ++ async def HasSubordinates(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~BoolResult]<~BoolResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='HasSubordinates', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsResults) ++ async def JoinedRelations(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsResult]<~StringsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='JoinedRelations', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def LeaveScope(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='LeaveScope', version=5, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def Life(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Life', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def Merge(self, params): ++ ''' ++ params : typing.Sequence<+T_co>[~MergeLeadershipSettingsParam]<~MergeLeadershipSettingsParam> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Merge', version=5, params=_params) ++ _params['params'] = params ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ModelConfigResult) ++ async def ModelConfig(self): ++ ''' ++ ++ Returns -> typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ModelConfig', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def ModelUUID(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ModelUUID', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NetworkInfoResults) ++ async def NetworkInfo(self, bindings, unit): ++ ''' ++ bindings : typing.Sequence<+T_co>[str] ++ unit : str ++ Returns -> typing.Mapping<~KT, +VT_co>[str, ~NetworkInfoResult]<~NetworkInfoResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='NetworkInfo', version=5, params=_params) ++ _params['bindings'] = bindings ++ _params['unit'] = unit ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def OpenPorts(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='OpenPorts', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def PrivateAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='PrivateAddress', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def ProviderType(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ProviderType', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def PublicAddress(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='PublicAddress', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(GetLeadershipSettingsBulkResults) ++ async def Read(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~GetLeadershipSettingsResult]<~GetLeadershipSettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Read', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SettingsResults) ++ async def ReadRemoteSettings(self, relation_unit_pairs): ++ ''' ++ relation_unit_pairs : typing.Sequence<+T_co>[~RelationUnitPair]<~RelationUnitPair> ++ Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ReadRemoteSettings', version=5, params=_params) ++ _params['relation-unit-pairs'] = relation_unit_pairs ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(SettingsResults) ++ async def ReadSettings(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='ReadSettings', version=5, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RelationResults) ++ async def Relation(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Relation', version=5, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RelationResults) ++ async def RelationById(self, relation_ids): ++ ''' ++ relation_ids : typing.Sequence<+T_co>[int] ++ Returns -> typing.Sequence<+T_co>[~RelationResult]<~RelationResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='RelationById', version=5, params=_params) ++ _params['relation-ids'] = relation_ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RemoveStorageAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='RemoveStorageAttachments', version=5, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def RequestReboot(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='RequestReboot', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ResolvedModeResults) ++ async def Resolved(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~ResolvedModeResult]<~ResolvedModeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Resolved', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResult) ++ async def SLALevel(self): ++ ''' ++ ++ Returns -> typing.Union[_ForwardRef('Error'), str] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SLALevel', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetAgentStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetAgentStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetApplicationStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetApplicationStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetCharmURL(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityCharmURL]<~EntityCharmURL> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetCharmURL', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetUnitStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetUnitStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def SetWorkloadVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityWorkloadVersion]<~EntityWorkloadVersion> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='SetWorkloadVersion', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(LifeResults) ++ async def StorageAttachmentLife(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='StorageAttachmentLife', version=5, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StorageAttachmentResults) ++ async def StorageAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~StorageAttachmentResult]<~StorageAttachmentResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='StorageAttachments', version=5, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StatusResults) ++ async def UnitStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='UnitStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StorageAttachmentIdsResults) ++ async def UnitStorageAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StorageAttachmentIdsResult]<~StorageAttachmentIdsResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='UnitStorageAttachments', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(ErrorResults) ++ async def UpdateSettings(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnitSettings]<~RelationUnitSettings> ++ Returns -> typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='UpdateSettings', version=5, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def Watch(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='Watch', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchAPIHostPorts(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchAPIHostPorts', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchActionNotifications(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchActionNotifications', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchConfigSettings(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchConfigSettings', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResult) ++ async def WatchForModelConfigChanges(self): ++ ''' ++ ++ Returns -> typing.Union[str, _ForwardRef('Error')] ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchForModelConfigChanges', version=5, params=_params) ++ ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchLeadershipSettings(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchLeadershipSettings', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchMeterStatus(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchMeterStatus', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(RelationUnitsWatchResults) ++ async def WatchRelationUnits(self, relation_units): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ Returns -> typing.Sequence<+T_co>[~RelationUnitsWatchResult]<~RelationUnitsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchRelationUnits', version=5, params=_params) ++ _params['relation-units'] = relation_units ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchStorageAttachments(self, ids): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchStorageAttachments', version=5, params=_params) ++ _params['ids'] = ids ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(NotifyWatchResults) ++ async def WatchUnitAddresses(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchUnitAddresses', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchUnitRelations(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchUnitRelations', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringsWatchResults) ++ async def WatchUnitStorageAttachments(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WatchUnitStorageAttachments', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++ ++ @ReturnMapping(StringResults) ++ async def WorkloadVersion(self, entities): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ Returns -> typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Uniter', request='WorkloadVersion', version=5, params=_params) ++ _params['entities'] = entities ++ reply = await self.rpc(msg) ++ return reply ++ ++ diff --cc modules/libjuju/juju/client/_definitions.py index 0000000,0000000..198784d new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/_definitions.py @@@ -1,0 -1,0 +1,8022 @@@ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++from juju.client.facade import Type, ReturnMapping ++ ++ ++class APIHostPortsResult(Type): ++ _toSchema = {'servers': 'servers'} ++ _toPy = {'servers': 'servers'} ++ def __init__(self, servers=None, **unknown_fields): ++ ''' ++ servers : typing.Sequence<+T_co>[~HostPort]<~HostPort> ++ ''' ++ self.servers = [HostPort.from_json(o) for o in servers or []] ++ ++ ++ ++class Action(Type): ++ _toSchema = {'name': 'name', 'parameters': 'parameters', 'receiver': 'receiver', 'tag': 'tag'} ++ _toPy = {'name': 'name', 'parameters': 'parameters', 'receiver': 'receiver', 'tag': 'tag'} ++ def __init__(self, name=None, parameters=None, receiver=None, tag=None, **unknown_fields): ++ ''' ++ name : str ++ parameters : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ receiver : str ++ tag : str ++ ''' ++ self.name = name ++ self.parameters = parameters ++ self.receiver = receiver ++ self.tag = tag ++ ++ ++ ++class ActionExecutionResult(Type): ++ _toSchema = {'action_tag': 'action-tag', 'message': 'message', 'results': 'results', 'status': 'status'} ++ _toPy = {'action-tag': 'action_tag', 'message': 'message', 'results': 'results', 'status': 'status'} ++ def __init__(self, action_tag=None, message=None, results=None, status=None, **unknown_fields): ++ ''' ++ action_tag : str ++ message : str ++ results : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ status : str ++ ''' ++ self.action_tag = action_tag ++ self.message = message ++ self.results = results ++ self.status = status ++ ++ ++ ++class ActionExecutionResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ActionExecutionResult]<~ActionExecutionResult> ++ ''' ++ self.results = [ActionExecutionResult.from_json(o) for o in results or []] ++ ++ ++ ++class ActionResult(Type): ++ _toSchema = {'action': 'action', 'completed': 'completed', 'enqueued': 'enqueued', 'error': 'error', 'message': 'message', 'output': 'output', 'started': 'started', 'status': 'status'} ++ _toPy = {'action': 'action', 'completed': 'completed', 'enqueued': 'enqueued', 'error': 'error', 'message': 'message', 'output': 'output', 'started': 'started', 'status': 'status'} ++ def __init__(self, action=None, completed=None, enqueued=None, error=None, message=None, output=None, started=None, status=None, **unknown_fields): ++ ''' ++ action : Action ++ completed : str ++ enqueued : str ++ error : Error ++ message : str ++ output : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ started : str ++ status : str ++ ''' ++ self.action = Action.from_json(action) if action else None ++ self.completed = completed ++ self.enqueued = enqueued ++ self.error = Error.from_json(error) if error else None ++ self.message = message ++ self.output = output ++ self.started = started ++ self.status = status ++ ++ ++ ++class ActionResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ ''' ++ self.results = [ActionResult.from_json(o) for o in results or []] ++ ++ ++ ++class ActionSpec(Type): ++ _toSchema = {'description': 'description', 'params': 'params'} ++ _toPy = {'description': 'description', 'params': 'params'} ++ def __init__(self, description=None, params=None, **unknown_fields): ++ ''' ++ description : str ++ params : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.description = description ++ self.params = params ++ ++ ++ ++class Actions(Type): ++ _toSchema = {'actions': 'actions'} ++ _toPy = {'actions': 'actions'} ++ def __init__(self, actions=None, **unknown_fields): ++ ''' ++ actions : typing.Sequence<+T_co>[~Action]<~Action> ++ ''' ++ self.actions = [Action.from_json(o) for o in actions or []] ++ ++ ++ ++class ActionsByName(Type): ++ _toSchema = {'actions': 'actions', 'error': 'error', 'name': 'name'} ++ _toPy = {'actions': 'actions', 'error': 'error', 'name': 'name'} ++ def __init__(self, actions=None, error=None, name=None, **unknown_fields): ++ ''' ++ actions : typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ error : Error ++ name : str ++ ''' ++ self.actions = [ActionResult.from_json(o) for o in actions or []] ++ self.error = Error.from_json(error) if error else None ++ self.name = name ++ ++ ++ ++class ActionsByNames(Type): ++ _toSchema = {'actions': 'actions'} ++ _toPy = {'actions': 'actions'} ++ def __init__(self, actions=None, **unknown_fields): ++ ''' ++ actions : typing.Sequence<+T_co>[~ActionsByName]<~ActionsByName> ++ ''' ++ self.actions = [ActionsByName.from_json(o) for o in actions or []] ++ ++ ++ ++class ActionsByReceiver(Type): ++ _toSchema = {'actions': 'actions', 'error': 'error', 'receiver': 'receiver'} ++ _toPy = {'actions': 'actions', 'error': 'error', 'receiver': 'receiver'} ++ def __init__(self, actions=None, error=None, receiver=None, **unknown_fields): ++ ''' ++ actions : typing.Sequence<+T_co>[~ActionResult]<~ActionResult> ++ error : Error ++ receiver : str ++ ''' ++ self.actions = [ActionResult.from_json(o) for o in actions or []] ++ self.error = Error.from_json(error) if error else None ++ self.receiver = receiver ++ ++ ++ ++class ActionsByReceivers(Type): ++ _toSchema = {'actions': 'actions'} ++ _toPy = {'actions': 'actions'} ++ def __init__(self, actions=None, **unknown_fields): ++ ''' ++ actions : typing.Sequence<+T_co>[~ActionsByReceiver]<~ActionsByReceiver> ++ ''' ++ self.actions = [ActionsByReceiver.from_json(o) for o in actions or []] ++ ++ ++ ++class AddApplicationUnits(Type): ++ _toSchema = {'application': 'application', 'num_units': 'num-units', 'placement': 'placement'} ++ _toPy = {'application': 'application', 'num-units': 'num_units', 'placement': 'placement'} ++ def __init__(self, application=None, num_units=None, placement=None, **unknown_fields): ++ ''' ++ application : str ++ num_units : int ++ placement : typing.Sequence<+T_co>[~Placement]<~Placement> ++ ''' ++ self.application = application ++ self.num_units = num_units ++ self.placement = [Placement.from_json(o) for o in placement or []] ++ ++ ++ ++class AddApplicationUnitsResults(Type): ++ _toSchema = {'units': 'units'} ++ _toPy = {'units': 'units'} ++ def __init__(self, units=None, **unknown_fields): ++ ''' ++ units : typing.Sequence<+T_co>[str] ++ ''' ++ self.units = units ++ ++ ++ ++class AddCharm(Type): ++ _toSchema = {'channel': 'channel', 'url': 'url'} ++ _toPy = {'channel': 'channel', 'url': 'url'} ++ def __init__(self, channel=None, url=None, **unknown_fields): ++ ''' ++ channel : str ++ url : str ++ ''' ++ self.channel = channel ++ self.url = url ++ ++ ++ ++class AddCharmWithAuthorization(Type): ++ _toSchema = {'channel': 'channel', 'macaroon': 'macaroon', 'url': 'url'} ++ _toPy = {'channel': 'channel', 'macaroon': 'macaroon', 'url': 'url'} ++ def __init__(self, channel=None, macaroon=None, url=None, **unknown_fields): ++ ''' ++ channel : str ++ macaroon : Macaroon ++ url : str ++ ''' ++ self.channel = channel ++ self.macaroon = Macaroon.from_json(macaroon) if macaroon else None ++ self.url = url ++ ++ ++ ++class AddMachineParams(Type): ++ _toSchema = {'addresses': 'addresses', 'constraints': 'constraints', 'container_type': 'container-type', 'disks': 'disks', 'hardware_characteristics': 'hardware-characteristics', 'instance_id': 'instance-id', 'jobs': 'jobs', 'nonce': 'nonce', 'parent_id': 'parent-id', 'placement': 'placement', 'series': 'series'} ++ _toPy = {'addresses': 'addresses', 'constraints': 'constraints', 'container-type': 'container_type', 'disks': 'disks', 'hardware-characteristics': 'hardware_characteristics', 'instance-id': 'instance_id', 'jobs': 'jobs', 'nonce': 'nonce', 'parent-id': 'parent_id', 'placement': 'placement', 'series': 'series'} ++ def __init__(self, addresses=None, constraints=None, container_type=None, disks=None, hardware_characteristics=None, instance_id=None, jobs=None, nonce=None, parent_id=None, placement=None, series=None, **unknown_fields): ++ ''' ++ addresses : typing.Sequence<+T_co>[~Address]<~Address> ++ constraints : Value ++ container_type : str ++ disks : typing.Sequence<+T_co>[~Constraints]<~Constraints> ++ hardware_characteristics : HardwareCharacteristics ++ instance_id : str ++ jobs : typing.Sequence<+T_co>[str] ++ nonce : str ++ parent_id : str ++ placement : Placement ++ series : str ++ ''' ++ self.addresses = [Address.from_json(o) for o in addresses or []] ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.container_type = container_type ++ self.disks = [Constraints.from_json(o) for o in disks or []] ++ self.hardware_characteristics = HardwareCharacteristics.from_json(hardware_characteristics) if hardware_characteristics else None ++ self.instance_id = instance_id ++ self.jobs = jobs ++ self.nonce = nonce ++ self.parent_id = parent_id ++ self.placement = Placement.from_json(placement) if placement else None ++ self.series = series ++ ++ ++ ++class AddMachines(Type): ++ _toSchema = {'params': 'params'} ++ _toPy = {'params': 'params'} ++ def __init__(self, params=None, **unknown_fields): ++ ''' ++ params : typing.Sequence<+T_co>[~AddMachineParams]<~AddMachineParams> ++ ''' ++ self.params = [AddMachineParams.from_json(o) for o in params or []] ++ ++ ++ ++class AddMachinesResult(Type): ++ _toSchema = {'error': 'error', 'machine': 'machine'} ++ _toPy = {'error': 'error', 'machine': 'machine'} ++ def __init__(self, error=None, machine=None, **unknown_fields): ++ ''' ++ error : Error ++ machine : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.machine = machine ++ ++ ++ ++class AddMachinesResults(Type): ++ _toSchema = {'machines': 'machines'} ++ _toPy = {'machines': 'machines'} ++ def __init__(self, machines=None, **unknown_fields): ++ ''' ++ machines : typing.Sequence<+T_co>[~AddMachinesResult]<~AddMachinesResult> ++ ''' ++ self.machines = [AddMachinesResult.from_json(o) for o in machines or []] ++ ++ ++ ++class AddPendingResourcesArgs(Type): ++ _toSchema = {'addcharmwithauthorization': 'AddCharmWithAuthorization', 'entity': 'Entity', 'resources': 'Resources'} ++ _toPy = {'AddCharmWithAuthorization': 'addcharmwithauthorization', 'Entity': 'entity', 'Resources': 'resources'} ++ def __init__(self, addcharmwithauthorization=None, entity=None, resources=None, **unknown_fields): ++ ''' ++ addcharmwithauthorization : AddCharmWithAuthorization ++ entity : Entity ++ resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource> ++ ''' ++ self.addcharmwithauthorization = AddCharmWithAuthorization.from_json(addcharmwithauthorization) if addcharmwithauthorization else None ++ self.entity = Entity.from_json(entity) if entity else None ++ self.resources = [CharmResource.from_json(o) for o in resources or []] ++ ++ ++ ++class AddPendingResourcesResult(Type): ++ _toSchema = {'errorresult': 'ErrorResult', 'pending_ids': 'pending-ids'} ++ _toPy = {'ErrorResult': 'errorresult', 'pending-ids': 'pending_ids'} ++ def __init__(self, errorresult=None, pending_ids=None, **unknown_fields): ++ ''' ++ errorresult : ErrorResult ++ pending_ids : typing.Sequence<+T_co>[str] ++ ''' ++ self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None ++ self.pending_ids = pending_ids ++ ++ ++ ++class AddRelation(Type): ++ _toSchema = {'endpoints': 'endpoints'} ++ _toPy = {'endpoints': 'endpoints'} ++ def __init__(self, endpoints=None, **unknown_fields): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ ''' ++ self.endpoints = endpoints ++ ++ ++ ++class AddRelationResults(Type): ++ _toSchema = {'endpoints': 'endpoints'} ++ _toPy = {'endpoints': 'endpoints'} ++ def __init__(self, endpoints=None, **unknown_fields): ++ ''' ++ endpoints : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ ''' ++ self.endpoints = endpoints ++ ++ ++ ++class AddSubnetParams(Type): ++ _toSchema = {'space_tag': 'space-tag', 'subnet_provider_id': 'subnet-provider-id', 'subnet_tag': 'subnet-tag', 'zones': 'zones'} ++ _toPy = {'space-tag': 'space_tag', 'subnet-provider-id': 'subnet_provider_id', 'subnet-tag': 'subnet_tag', 'zones': 'zones'} ++ def __init__(self, space_tag=None, subnet_provider_id=None, subnet_tag=None, zones=None, **unknown_fields): ++ ''' ++ space_tag : str ++ subnet_provider_id : str ++ subnet_tag : str ++ zones : typing.Sequence<+T_co>[str] ++ ''' ++ self.space_tag = space_tag ++ self.subnet_provider_id = subnet_provider_id ++ self.subnet_tag = subnet_tag ++ self.zones = zones ++ ++ ++ ++class AddSubnetsParams(Type): ++ _toSchema = {'subnets': 'subnets'} ++ _toPy = {'subnets': 'subnets'} ++ def __init__(self, subnets=None, **unknown_fields): ++ ''' ++ subnets : typing.Sequence<+T_co>[~AddSubnetParams]<~AddSubnetParams> ++ ''' ++ self.subnets = [AddSubnetParams.from_json(o) for o in subnets or []] ++ ++ ++ ++class AddUser(Type): ++ _toSchema = {'display_name': 'display-name', 'password': 'password', 'username': 'username'} ++ _toPy = {'display-name': 'display_name', 'password': 'password', 'username': 'username'} ++ def __init__(self, display_name=None, password=None, username=None, **unknown_fields): ++ ''' ++ display_name : str ++ password : str ++ username : str ++ ''' ++ self.display_name = display_name ++ self.password = password ++ self.username = username ++ ++ ++ ++class AddUserResult(Type): ++ _toSchema = {'error': 'error', 'secret_key': 'secret-key', 'tag': 'tag'} ++ _toPy = {'error': 'error', 'secret-key': 'secret_key', 'tag': 'tag'} ++ def __init__(self, error=None, secret_key=None, tag=None, **unknown_fields): ++ ''' ++ error : Error ++ secret_key : typing.Sequence<+T_co>[int] ++ tag : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.secret_key = secret_key ++ self.tag = tag ++ ++ ++ ++class AddUserResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~AddUserResult]<~AddUserResult> ++ ''' ++ self.results = [AddUserResult.from_json(o) for o in results or []] ++ ++ ++ ++class AddUsers(Type): ++ _toSchema = {'users': 'users'} ++ _toPy = {'users': 'users'} ++ def __init__(self, users=None, **unknown_fields): ++ ''' ++ users : typing.Sequence<+T_co>[~AddUser]<~AddUser> ++ ''' ++ self.users = [AddUser.from_json(o) for o in users or []] ++ ++ ++ ++class Address(Type): ++ _toSchema = {'scope': 'scope', 'space_name': 'space-name', 'type_': 'type', 'value': 'value'} ++ _toPy = {'scope': 'scope', 'space-name': 'space_name', 'type': 'type_', 'value': 'value'} ++ def __init__(self, scope=None, space_name=None, type_=None, value=None, **unknown_fields): ++ ''' ++ scope : str ++ space_name : str ++ type_ : str ++ value : str ++ ''' ++ self.scope = scope ++ self.space_name = space_name ++ self.type_ = type_ ++ self.value = value ++ ++ ++ ++class AdoptResourcesArgs(Type): ++ _toSchema = {'model_tag': 'model-tag', 'source_controller_version': 'source-controller-version'} ++ _toPy = {'model-tag': 'model_tag', 'source-controller-version': 'source_controller_version'} ++ def __init__(self, model_tag=None, source_controller_version=None, **unknown_fields): ++ ''' ++ model_tag : str ++ source_controller_version : Number ++ ''' ++ self.model_tag = model_tag ++ self.source_controller_version = Number.from_json(source_controller_version) if source_controller_version else None ++ ++ ++ ++class AgentGetEntitiesResult(Type): ++ _toSchema = {'container_type': 'container-type', 'error': 'error', 'jobs': 'jobs', 'life': 'life'} ++ _toPy = {'container-type': 'container_type', 'error': 'error', 'jobs': 'jobs', 'life': 'life'} ++ def __init__(self, container_type=None, error=None, jobs=None, life=None, **unknown_fields): ++ ''' ++ container_type : str ++ error : Error ++ jobs : typing.Sequence<+T_co>[str] ++ life : str ++ ''' ++ self.container_type = container_type ++ self.error = Error.from_json(error) if error else None ++ self.jobs = jobs ++ self.life = life ++ ++ ++ ++class AgentGetEntitiesResults(Type): ++ _toSchema = {'entities': 'entities'} ++ _toPy = {'entities': 'entities'} ++ def __init__(self, entities=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~AgentGetEntitiesResult]<~AgentGetEntitiesResult> ++ ''' ++ self.entities = [AgentGetEntitiesResult.from_json(o) for o in entities or []] ++ ++ ++ ++class AgentVersionResult(Type): ++ _toSchema = {'version': 'version'} ++ _toPy = {'version': 'version'} ++ def __init__(self, version=None, **unknown_fields): ++ ''' ++ version : Number ++ ''' ++ self.version = Number.from_json(version) if version else None ++ ++ ++ ++class AllWatcherId(Type): ++ _toSchema = {'watcher_id': 'watcher-id'} ++ _toPy = {'watcher-id': 'watcher_id'} ++ def __init__(self, watcher_id=None, **unknown_fields): ++ ''' ++ watcher_id : str ++ ''' ++ self.watcher_id = watcher_id ++ ++ ++ ++class AllWatcherNextResults(Type): ++ _toSchema = {'deltas': 'deltas'} ++ _toPy = {'deltas': 'deltas'} ++ def __init__(self, deltas=None, **unknown_fields): ++ ''' ++ deltas : typing.Sequence<+T_co>[~Delta]<~Delta> ++ ''' ++ self.deltas = [Delta.from_json(o) for o in deltas or []] ++ ++ ++ ++class AnnotationsGetResult(Type): ++ _toSchema = {'annotations': 'annotations', 'entity': 'entity', 'error': 'error'} ++ _toPy = {'annotations': 'annotations', 'entity': 'entity', 'error': 'error'} ++ def __init__(self, annotations=None, entity=None, error=None, **unknown_fields): ++ ''' ++ annotations : typing.Mapping<~KT, +VT_co>[str, str] ++ entity : str ++ error : ErrorResult ++ ''' ++ self.annotations = annotations ++ self.entity = entity ++ self.error = ErrorResult.from_json(error) if error else None ++ ++ ++ ++class AnnotationsGetResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~AnnotationsGetResult]<~AnnotationsGetResult> ++ ''' ++ self.results = [AnnotationsGetResult.from_json(o) for o in results or []] ++ ++ ++ ++class AnnotationsSet(Type): ++ _toSchema = {'annotations': 'annotations'} ++ _toPy = {'annotations': 'annotations'} ++ def __init__(self, annotations=None, **unknown_fields): ++ ''' ++ annotations : typing.Sequence<+T_co>[~EntityAnnotations]<~EntityAnnotations> ++ ''' ++ self.annotations = [EntityAnnotations.from_json(o) for o in annotations or []] ++ ++ ++ ++class ApplicationCharmActionsResult(Type): ++ _toSchema = {'actions': 'actions', 'application_tag': 'application-tag', 'error': 'error'} ++ _toPy = {'actions': 'actions', 'application-tag': 'application_tag', 'error': 'error'} ++ def __init__(self, actions=None, application_tag=None, error=None, **unknown_fields): ++ ''' ++ actions : typing.Mapping<~KT, +VT_co>[str, ~ActionSpec]<~ActionSpec> ++ application_tag : str ++ error : Error ++ ''' ++ self.actions = actions ++ self.application_tag = application_tag ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class ApplicationCharmRelations(Type): ++ _toSchema = {'application': 'application'} ++ _toPy = {'application': 'application'} ++ def __init__(self, application=None, **unknown_fields): ++ ''' ++ application : str ++ ''' ++ self.application = application ++ ++ ++ ++class ApplicationCharmRelationsResults(Type): ++ _toSchema = {'charm_relations': 'charm-relations'} ++ _toPy = {'charm-relations': 'charm_relations'} ++ def __init__(self, charm_relations=None, **unknown_fields): ++ ''' ++ charm_relations : typing.Sequence<+T_co>[str] ++ ''' ++ self.charm_relations = charm_relations ++ ++ ++ ++class ApplicationDeploy(Type): ++ _toSchema = {'application': 'application', 'channel': 'channel', 'charm_url': 'charm-url', 'config': 'config', 'config_yaml': 'config-yaml', 'constraints': 'constraints', 'endpoint_bindings': 'endpoint-bindings', 'num_units': 'num-units', 'placement': 'placement', 'resources': 'resources', 'series': 'series', 'storage': 'storage'} ++ _toPy = {'application': 'application', 'channel': 'channel', 'charm-url': 'charm_url', 'config': 'config', 'config-yaml': 'config_yaml', 'constraints': 'constraints', 'endpoint-bindings': 'endpoint_bindings', 'num-units': 'num_units', 'placement': 'placement', 'resources': 'resources', 'series': 'series', 'storage': 'storage'} ++ def __init__(self, application=None, channel=None, charm_url=None, config=None, config_yaml=None, constraints=None, endpoint_bindings=None, num_units=None, placement=None, resources=None, series=None, storage=None, **unknown_fields): ++ ''' ++ application : str ++ channel : str ++ charm_url : str ++ config : typing.Mapping<~KT, +VT_co>[str, str] ++ config_yaml : str ++ constraints : Value ++ endpoint_bindings : typing.Mapping<~KT, +VT_co>[str, str] ++ num_units : int ++ placement : typing.Sequence<+T_co>[~Placement]<~Placement> ++ resources : typing.Mapping<~KT, +VT_co>[str, str] ++ series : str ++ storage : typing.Mapping<~KT, +VT_co>[str, ~Constraints]<~Constraints> ++ ''' ++ self.application = application ++ self.channel = channel ++ self.charm_url = charm_url ++ self.config = config ++ self.config_yaml = config_yaml ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.endpoint_bindings = endpoint_bindings ++ self.num_units = num_units ++ self.placement = [Placement.from_json(o) for o in placement or []] ++ self.resources = resources ++ self.series = series ++ self.storage = storage ++ ++ ++ ++class ApplicationDestroy(Type): ++ _toSchema = {'application': 'application'} ++ _toPy = {'application': 'application'} ++ def __init__(self, application=None, **unknown_fields): ++ ''' ++ application : str ++ ''' ++ self.application = application ++ ++ ++ ++class ApplicationExpose(Type): ++ _toSchema = {'application': 'application'} ++ _toPy = {'application': 'application'} ++ def __init__(self, application=None, **unknown_fields): ++ ''' ++ application : str ++ ''' ++ self.application = application ++ ++ ++ ++class ApplicationGet(Type): ++ _toSchema = {'application': 'application'} ++ _toPy = {'application': 'application'} ++ def __init__(self, application=None, **unknown_fields): ++ ''' ++ application : str ++ ''' ++ self.application = application ++ ++ ++ ++class ApplicationGetResults(Type): ++ _toSchema = {'application': 'application', 'charm': 'charm', 'config': 'config', 'constraints': 'constraints', 'series': 'series'} ++ _toPy = {'application': 'application', 'charm': 'charm', 'config': 'config', 'constraints': 'constraints', 'series': 'series'} ++ def __init__(self, application=None, charm=None, config=None, constraints=None, series=None, **unknown_fields): ++ ''' ++ application : str ++ charm : str ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ constraints : Value ++ series : str ++ ''' ++ self.application = application ++ self.charm = charm ++ self.config = config ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.series = series ++ ++ ++ ++class ApplicationMetricCredential(Type): ++ _toSchema = {'application': 'application', 'metrics_credentials': 'metrics-credentials'} ++ _toPy = {'application': 'application', 'metrics-credentials': 'metrics_credentials'} ++ def __init__(self, application=None, metrics_credentials=None, **unknown_fields): ++ ''' ++ application : str ++ metrics_credentials : typing.Sequence<+T_co>[int] ++ ''' ++ self.application = application ++ self.metrics_credentials = metrics_credentials ++ ++ ++ ++class ApplicationMetricCredentials(Type): ++ _toSchema = {'creds': 'creds'} ++ _toPy = {'creds': 'creds'} ++ def __init__(self, creds=None, **unknown_fields): ++ ''' ++ creds : typing.Sequence<+T_co>[~ApplicationMetricCredential]<~ApplicationMetricCredential> ++ ''' ++ self.creds = [ApplicationMetricCredential.from_json(o) for o in creds or []] ++ ++ ++ ++class ApplicationOffer(Type): ++ _toSchema = {'access': 'access', 'application_description': 'application-description', 'bindings': 'bindings', 'endpoints': 'endpoints', 'offer_name': 'offer-name', 'offer_url': 'offer-url', 'source_model_tag': 'source-model-tag', 'spaces': 'spaces'} ++ _toPy = {'access': 'access', 'application-description': 'application_description', 'bindings': 'bindings', 'endpoints': 'endpoints', 'offer-name': 'offer_name', 'offer-url': 'offer_url', 'source-model-tag': 'source_model_tag', 'spaces': 'spaces'} ++ def __init__(self, access=None, application_description=None, bindings=None, endpoints=None, offer_name=None, offer_url=None, source_model_tag=None, spaces=None, **unknown_fields): ++ ''' ++ access : str ++ application_description : str ++ bindings : typing.Mapping<~KT, +VT_co>[str, str] ++ endpoints : typing.Sequence<+T_co>[~RemoteEndpoint]<~RemoteEndpoint> ++ offer_name : str ++ offer_url : str ++ source_model_tag : str ++ spaces : typing.Sequence<+T_co>[~RemoteSpace]<~RemoteSpace> ++ ''' ++ self.access = access ++ self.application_description = application_description ++ self.bindings = bindings ++ self.endpoints = [RemoteEndpoint.from_json(o) for o in endpoints or []] ++ self.offer_name = offer_name ++ self.offer_url = offer_url ++ self.source_model_tag = source_model_tag ++ self.spaces = [RemoteSpace.from_json(o) for o in spaces or []] ++ ++ ++ ++class ApplicationRelationsChange(Type): ++ _toSchema = {'changed': 'changed', 'removed': 'removed'} ++ _toPy = {'changed': 'changed', 'removed': 'removed'} ++ def __init__(self, changed=None, removed=None, **unknown_fields): ++ ''' ++ changed : typing.Sequence<+T_co>[~RelationChange]<~RelationChange> ++ removed : typing.Sequence<+T_co>[int] ++ ''' ++ self.changed = [RelationChange.from_json(o) for o in changed or []] ++ self.removed = removed ++ ++ ++ ++class ApplicationRelationsWatchResult(Type): ++ _toSchema = {'applicationrelationswatcherid': 'ApplicationRelationsWatcherId', 'changes': 'changes', 'error': 'error'} ++ _toPy = {'ApplicationRelationsWatcherId': 'applicationrelationswatcherid', 'changes': 'changes', 'error': 'error'} ++ def __init__(self, applicationrelationswatcherid=None, changes=None, error=None, **unknown_fields): ++ ''' ++ applicationrelationswatcherid : str ++ changes : ApplicationRelationsChange ++ error : Error ++ ''' ++ self.applicationrelationswatcherid = applicationrelationswatcherid ++ self.changes = ApplicationRelationsChange.from_json(changes) if changes else None ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class ApplicationSet(Type): ++ _toSchema = {'application': 'application', 'options': 'options'} ++ _toPy = {'application': 'application', 'options': 'options'} ++ def __init__(self, application=None, options=None, **unknown_fields): ++ ''' ++ application : str ++ options : typing.Mapping<~KT, +VT_co>[str, str] ++ ''' ++ self.application = application ++ self.options = options ++ ++ ++ ++class ApplicationSetCharm(Type): ++ _toSchema = {'application': 'application', 'channel': 'channel', 'charm_url': 'charm-url', 'config_settings': 'config-settings', 'config_settings_yaml': 'config-settings-yaml', 'force_series': 'force-series', 'force_units': 'force-units', 'resource_ids': 'resource-ids', 'storage_constraints': 'storage-constraints'} ++ _toPy = {'application': 'application', 'channel': 'channel', 'charm-url': 'charm_url', 'config-settings': 'config_settings', 'config-settings-yaml': 'config_settings_yaml', 'force-series': 'force_series', 'force-units': 'force_units', 'resource-ids': 'resource_ids', 'storage-constraints': 'storage_constraints'} ++ def __init__(self, application=None, channel=None, charm_url=None, config_settings=None, config_settings_yaml=None, force_series=None, force_units=None, resource_ids=None, storage_constraints=None, **unknown_fields): ++ ''' ++ application : str ++ channel : str ++ charm_url : str ++ config_settings : typing.Mapping<~KT, +VT_co>[str, str] ++ config_settings_yaml : str ++ force_series : bool ++ force_units : bool ++ resource_ids : typing.Mapping<~KT, +VT_co>[str, str] ++ storage_constraints : typing.Mapping<~KT, +VT_co>[str, ~StorageConstraints]<~StorageConstraints> ++ ''' ++ self.application = application ++ self.channel = channel ++ self.charm_url = charm_url ++ self.config_settings = config_settings ++ self.config_settings_yaml = config_settings_yaml ++ self.force_series = force_series ++ self.force_units = force_units ++ self.resource_ids = resource_ids ++ self.storage_constraints = storage_constraints ++ ++ ++ ++class ApplicationStatus(Type): ++ _toSchema = {'can_upgrade_to': 'can-upgrade-to', 'charm': 'charm', 'err': 'err', 'exposed': 'exposed', 'life': 'life', 'meter_statuses': 'meter-statuses', 'relations': 'relations', 'series': 'series', 'status': 'status', 'subordinate_to': 'subordinate-to', 'units': 'units', 'workload_version': 'workload-version'} ++ _toPy = {'can-upgrade-to': 'can_upgrade_to', 'charm': 'charm', 'err': 'err', 'exposed': 'exposed', 'life': 'life', 'meter-statuses': 'meter_statuses', 'relations': 'relations', 'series': 'series', 'status': 'status', 'subordinate-to': 'subordinate_to', 'units': 'units', 'workload-version': 'workload_version'} ++ def __init__(self, can_upgrade_to=None, charm=None, err=None, exposed=None, life=None, meter_statuses=None, relations=None, series=None, status=None, subordinate_to=None, units=None, workload_version=None, **unknown_fields): ++ ''' ++ can_upgrade_to : str ++ charm : str ++ err : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ exposed : bool ++ life : str ++ meter_statuses : typing.Mapping<~KT, +VT_co>[str, ~MeterStatus]<~MeterStatus> ++ relations : typing.Sequence<+T_co>[str] ++ series : str ++ status : DetailedStatus ++ subordinate_to : typing.Sequence<+T_co>[str] ++ units : typing.Mapping<~KT, +VT_co>[str, ~UnitStatus]<~UnitStatus> ++ workload_version : str ++ ''' ++ self.can_upgrade_to = can_upgrade_to ++ self.charm = charm ++ self.err = err ++ self.exposed = exposed ++ self.life = life ++ self.meter_statuses = meter_statuses ++ self.relations = relations ++ self.series = series ++ self.status = DetailedStatus.from_json(status) if status else None ++ self.subordinate_to = subordinate_to ++ self.units = units ++ self.workload_version = workload_version ++ ++ ++ ++class ApplicationStatusResult(Type): ++ _toSchema = {'application': 'application', 'error': 'error', 'units': 'units'} ++ _toPy = {'application': 'application', 'error': 'error', 'units': 'units'} ++ def __init__(self, application=None, error=None, units=None, **unknown_fields): ++ ''' ++ application : StatusResult ++ error : Error ++ units : typing.Mapping<~KT, +VT_co>[str, ~StatusResult]<~StatusResult> ++ ''' ++ self.application = StatusResult.from_json(application) if application else None ++ self.error = Error.from_json(error) if error else None ++ self.units = units ++ ++ ++ ++class ApplicationStatusResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ApplicationStatusResult]<~ApplicationStatusResult> ++ ''' ++ self.results = [ApplicationStatusResult.from_json(o) for o in results or []] ++ ++ ++ ++class ApplicationTag(Type): ++ _toSchema = {'name': 'Name'} ++ _toPy = {'Name': 'name'} ++ def __init__(self, name=None, **unknown_fields): ++ ''' ++ name : str ++ ''' ++ self.name = name ++ ++ ++ ++class ApplicationURLs(Type): ++ _toSchema = {'application_urls': 'application-urls'} ++ _toPy = {'application-urls': 'application_urls'} ++ def __init__(self, application_urls=None, **unknown_fields): ++ ''' ++ application_urls : typing.Sequence<+T_co>[str] ++ ''' ++ self.application_urls = application_urls ++ ++ ++ ++class ApplicationUnexpose(Type): ++ _toSchema = {'application': 'application'} ++ _toPy = {'application': 'application'} ++ def __init__(self, application=None, **unknown_fields): ++ ''' ++ application : str ++ ''' ++ self.application = application ++ ++ ++ ++class ApplicationUnset(Type): ++ _toSchema = {'application': 'application', 'options': 'options'} ++ _toPy = {'application': 'application', 'options': 'options'} ++ def __init__(self, application=None, options=None, **unknown_fields): ++ ''' ++ application : str ++ options : typing.Sequence<+T_co>[str] ++ ''' ++ self.application = application ++ self.options = options ++ ++ ++ ++class ApplicationUpdate(Type): ++ _toSchema = {'application': 'application', 'charm_url': 'charm-url', 'constraints': 'constraints', 'force_charm_url': 'force-charm-url', 'force_series': 'force-series', 'min_units': 'min-units', 'settings': 'settings', 'settings_yaml': 'settings-yaml'} ++ _toPy = {'application': 'application', 'charm-url': 'charm_url', 'constraints': 'constraints', 'force-charm-url': 'force_charm_url', 'force-series': 'force_series', 'min-units': 'min_units', 'settings': 'settings', 'settings-yaml': 'settings_yaml'} ++ def __init__(self, application=None, charm_url=None, constraints=None, force_charm_url=None, force_series=None, min_units=None, settings=None, settings_yaml=None, **unknown_fields): ++ ''' ++ application : str ++ charm_url : str ++ constraints : Value ++ force_charm_url : bool ++ force_series : bool ++ min_units : int ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ settings_yaml : str ++ ''' ++ self.application = application ++ self.charm_url = charm_url ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.force_charm_url = force_charm_url ++ self.force_series = force_series ++ self.min_units = min_units ++ self.settings = settings ++ self.settings_yaml = settings_yaml ++ ++ ++ ++class ApplicationsCharmActionsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ApplicationCharmActionsResult]<~ApplicationCharmActionsResult> ++ ''' ++ self.results = [ApplicationCharmActionsResult.from_json(o) for o in results or []] ++ ++ ++ ++class ApplicationsDeploy(Type): ++ _toSchema = {'applications': 'applications'} ++ _toPy = {'applications': 'applications'} ++ def __init__(self, applications=None, **unknown_fields): ++ ''' ++ applications : typing.Sequence<+T_co>[~ApplicationDeploy]<~ApplicationDeploy> ++ ''' ++ self.applications = [ApplicationDeploy.from_json(o) for o in applications or []] ++ ++ ++ ++class BackupsCreateArgs(Type): ++ _toSchema = {'notes': 'notes'} ++ _toPy = {'notes': 'notes'} ++ def __init__(self, notes=None, **unknown_fields): ++ ''' ++ notes : str ++ ''' ++ self.notes = notes ++ ++ ++ ++class BackupsInfoArgs(Type): ++ _toSchema = {'id_': 'id'} ++ _toPy = {'id': 'id_'} ++ def __init__(self, id_=None, **unknown_fields): ++ ''' ++ id_ : str ++ ''' ++ self.id_ = id_ ++ ++ ++ ++class BackupsListArgs(Type): ++ _toSchema = {} ++ _toPy = {} ++ def __init__(self, **unknown_fields): ++ ''' ++ ++ ''' ++ pass ++ ++ ++ ++class BackupsListResult(Type): ++ _toSchema = {'list_': 'list'} ++ _toPy = {'list': 'list_'} ++ def __init__(self, list_=None, **unknown_fields): ++ ''' ++ list_ : typing.Sequence<+T_co>[~BackupsMetadataResult]<~BackupsMetadataResult> ++ ''' ++ self.list_ = [BackupsMetadataResult.from_json(o) for o in list_ or []] ++ ++ ++ ++class BackupsMetadataResult(Type): ++ _toSchema = {'ca_cert': 'ca-cert', 'ca_private_key': 'ca-private-key', 'checksum': 'checksum', 'checksum_format': 'checksum-format', 'finished': 'finished', 'hostname': 'hostname', 'id_': 'id', 'machine': 'machine', 'model': 'model', 'notes': 'notes', 'series': 'series', 'size': 'size', 'started': 'started', 'stored': 'stored', 'version': 'version'} ++ _toPy = {'ca-cert': 'ca_cert', 'ca-private-key': 'ca_private_key', 'checksum': 'checksum', 'checksum-format': 'checksum_format', 'finished': 'finished', 'hostname': 'hostname', 'id': 'id_', 'machine': 'machine', 'model': 'model', 'notes': 'notes', 'series': 'series', 'size': 'size', 'started': 'started', 'stored': 'stored', 'version': 'version'} ++ def __init__(self, ca_cert=None, ca_private_key=None, checksum=None, checksum_format=None, finished=None, hostname=None, id_=None, machine=None, model=None, notes=None, series=None, size=None, started=None, stored=None, version=None, **unknown_fields): ++ ''' ++ ca_cert : str ++ ca_private_key : str ++ checksum : str ++ checksum_format : str ++ finished : str ++ hostname : str ++ id_ : str ++ machine : str ++ model : str ++ notes : str ++ series : str ++ size : int ++ started : str ++ stored : str ++ version : Number ++ ''' ++ self.ca_cert = ca_cert ++ self.ca_private_key = ca_private_key ++ self.checksum = checksum ++ self.checksum_format = checksum_format ++ self.finished = finished ++ self.hostname = hostname ++ self.id_ = id_ ++ self.machine = machine ++ self.model = model ++ self.notes = notes ++ self.series = series ++ self.size = size ++ self.started = started ++ self.stored = stored ++ self.version = Number.from_json(version) if version else None ++ ++ ++ ++class BackupsRemoveArgs(Type): ++ _toSchema = {'id_': 'id'} ++ _toPy = {'id': 'id_'} ++ def __init__(self, id_=None, **unknown_fields): ++ ''' ++ id_ : str ++ ''' ++ self.id_ = id_ ++ ++ ++ ++class Binary(Type): ++ _toSchema = {'arch': 'Arch', 'number': 'Number', 'series': 'Series'} ++ _toPy = {'Arch': 'arch', 'Number': 'number', 'Series': 'series'} ++ def __init__(self, arch=None, number=None, series=None, **unknown_fields): ++ ''' ++ arch : str ++ number : Number ++ series : str ++ ''' ++ self.arch = arch ++ self.number = Number.from_json(number) if number else None ++ self.series = series ++ ++ ++ ++class Block(Type): ++ _toSchema = {'id_': 'id', 'message': 'message', 'tag': 'tag', 'type_': 'type'} ++ _toPy = {'id': 'id_', 'message': 'message', 'tag': 'tag', 'type': 'type_'} ++ def __init__(self, id_=None, message=None, tag=None, type_=None, **unknown_fields): ++ ''' ++ id_ : str ++ message : str ++ tag : str ++ type_ : str ++ ''' ++ self.id_ = id_ ++ self.message = message ++ self.tag = tag ++ self.type_ = type_ ++ ++ ++ ++class BlockDevice(Type): ++ _toSchema = {'busaddress': 'BusAddress', 'devicelinks': 'DeviceLinks', 'devicename': 'DeviceName', 'filesystemtype': 'FilesystemType', 'hardwareid': 'HardwareId', 'inuse': 'InUse', 'label': 'Label', 'mountpoint': 'MountPoint', 'size': 'Size', 'uuid': 'UUID'} ++ _toPy = {'BusAddress': 'busaddress', 'DeviceLinks': 'devicelinks', 'DeviceName': 'devicename', 'FilesystemType': 'filesystemtype', 'HardwareId': 'hardwareid', 'InUse': 'inuse', 'Label': 'label', 'MountPoint': 'mountpoint', 'Size': 'size', 'UUID': 'uuid'} ++ def __init__(self, busaddress=None, devicelinks=None, devicename=None, filesystemtype=None, hardwareid=None, inuse=None, label=None, mountpoint=None, size=None, uuid=None, **unknown_fields): ++ ''' ++ busaddress : str ++ devicelinks : typing.Sequence<+T_co>[str] ++ devicename : str ++ filesystemtype : str ++ hardwareid : str ++ inuse : bool ++ label : str ++ mountpoint : str ++ size : int ++ uuid : str ++ ''' ++ self.busaddress = busaddress ++ self.devicelinks = devicelinks ++ self.devicename = devicename ++ self.filesystemtype = filesystemtype ++ self.hardwareid = hardwareid ++ self.inuse = inuse ++ self.label = label ++ self.mountpoint = mountpoint ++ self.size = size ++ self.uuid = uuid ++ ++ ++ ++class BlockDeviceResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : BlockDevice ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = BlockDevice.from_json(result) if result else None ++ ++ ++ ++class BlockDeviceResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~BlockDeviceResult]<~BlockDeviceResult> ++ ''' ++ self.results = [BlockDeviceResult.from_json(o) for o in results or []] ++ ++ ++ ++class BlockResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : Block ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = Block.from_json(result) if result else None ++ ++ ++ ++class BlockResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~BlockResult]<~BlockResult> ++ ''' ++ self.results = [BlockResult.from_json(o) for o in results or []] ++ ++ ++ ++class BlockSwitchParams(Type): ++ _toSchema = {'message': 'message', 'type_': 'type'} ++ _toPy = {'message': 'message', 'type': 'type_'} ++ def __init__(self, message=None, type_=None, **unknown_fields): ++ ''' ++ message : str ++ type_ : str ++ ''' ++ self.message = message ++ self.type_ = type_ ++ ++ ++ ++class BoolResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : bool ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = result ++ ++ ++ ++class BoolResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~BoolResult]<~BoolResult> ++ ''' ++ self.results = [BoolResult.from_json(o) for o in results or []] ++ ++ ++ ++class BundleChange(Type): ++ _toSchema = {'args': 'args', 'id_': 'id', 'method': 'method', 'requires': 'requires'} ++ _toPy = {'args': 'args', 'id': 'id_', 'method': 'method', 'requires': 'requires'} ++ def __init__(self, args=None, id_=None, method=None, requires=None, **unknown_fields): ++ ''' ++ args : typing.Sequence<+T_co>[typing.Any] ++ id_ : str ++ method : str ++ requires : typing.Sequence<+T_co>[str] ++ ''' ++ self.args = args ++ self.id_ = id_ ++ self.method = method ++ self.requires = requires ++ ++ ++ ++class BundleChangesParams(Type): ++ _toSchema = {'yaml': 'yaml'} ++ _toPy = {'yaml': 'yaml'} ++ def __init__(self, yaml=None, **unknown_fields): ++ ''' ++ yaml : str ++ ''' ++ self.yaml = yaml ++ ++ ++ ++class BundleChangesResults(Type): ++ _toSchema = {'changes': 'changes', 'errors': 'errors'} ++ _toPy = {'changes': 'changes', 'errors': 'errors'} ++ def __init__(self, changes=None, errors=None, **unknown_fields): ++ ''' ++ changes : typing.Sequence<+T_co>[~BundleChange]<~BundleChange> ++ errors : typing.Sequence<+T_co>[str] ++ ''' ++ self.changes = [BundleChange.from_json(o) for o in changes or []] ++ self.errors = errors ++ ++ ++ ++class BytesResult(Type): ++ _toSchema = {'result': 'result'} ++ _toPy = {'result': 'result'} ++ def __init__(self, result=None, **unknown_fields): ++ ''' ++ result : typing.Sequence<+T_co>[int] ++ ''' ++ self.result = result ++ ++ ++ ++class CharmActionSpec(Type): ++ _toSchema = {'description': 'description', 'params': 'params'} ++ _toPy = {'description': 'description', 'params': 'params'} ++ def __init__(self, description=None, params=None, **unknown_fields): ++ ''' ++ description : str ++ params : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.description = description ++ self.params = params ++ ++ ++ ++class CharmActions(Type): ++ _toSchema = {'specs': 'specs'} ++ _toPy = {'specs': 'specs'} ++ def __init__(self, specs=None, **unknown_fields): ++ ''' ++ specs : typing.Mapping<~KT, +VT_co>[str, ~CharmActionSpec]<~CharmActionSpec> ++ ''' ++ self.specs = specs ++ ++ ++ ++class CharmInfo(Type): ++ _toSchema = {'actions': 'actions', 'config': 'config', 'meta': 'meta', 'metrics': 'metrics', 'revision': 'revision', 'url': 'url'} ++ _toPy = {'actions': 'actions', 'config': 'config', 'meta': 'meta', 'metrics': 'metrics', 'revision': 'revision', 'url': 'url'} ++ def __init__(self, actions=None, config=None, meta=None, metrics=None, revision=None, url=None, **unknown_fields): ++ ''' ++ actions : CharmActions ++ config : typing.Mapping<~KT, +VT_co>[str, ~CharmOption]<~CharmOption> ++ meta : CharmMeta ++ metrics : CharmMetrics ++ revision : int ++ url : str ++ ''' ++ self.actions = CharmActions.from_json(actions) if actions else None ++ self.config = config ++ self.meta = CharmMeta.from_json(meta) if meta else None ++ self.metrics = CharmMetrics.from_json(metrics) if metrics else None ++ self.revision = revision ++ self.url = url ++ ++ ++ ++class CharmMeta(Type): ++ _toSchema = {'categories': 'categories', 'description': 'description', 'extra_bindings': 'extra-bindings', 'min_juju_version': 'min-juju-version', 'name': 'name', 'payload_classes': 'payload-classes', 'peers': 'peers', 'provides': 'provides', 'requires': 'requires', 'resources': 'resources', 'series': 'series', 'storage': 'storage', 'subordinate': 'subordinate', 'summary': 'summary', 'tags': 'tags', 'terms': 'terms'} ++ _toPy = {'categories': 'categories', 'description': 'description', 'extra-bindings': 'extra_bindings', 'min-juju-version': 'min_juju_version', 'name': 'name', 'payload-classes': 'payload_classes', 'peers': 'peers', 'provides': 'provides', 'requires': 'requires', 'resources': 'resources', 'series': 'series', 'storage': 'storage', 'subordinate': 'subordinate', 'summary': 'summary', 'tags': 'tags', 'terms': 'terms'} ++ def __init__(self, categories=None, description=None, extra_bindings=None, min_juju_version=None, name=None, payload_classes=None, peers=None, provides=None, requires=None, resources=None, series=None, storage=None, subordinate=None, summary=None, tags=None, terms=None, **unknown_fields): ++ ''' ++ categories : typing.Sequence<+T_co>[str] ++ description : str ++ extra_bindings : typing.Mapping<~KT, +VT_co>[str, str] ++ min_juju_version : str ++ name : str ++ payload_classes : typing.Mapping<~KT, +VT_co>[str, ~CharmPayloadClass]<~CharmPayloadClass> ++ peers : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ provides : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ requires : typing.Mapping<~KT, +VT_co>[str, ~CharmRelation]<~CharmRelation> ++ resources : typing.Mapping<~KT, +VT_co>[str, ~CharmResourceMeta]<~CharmResourceMeta> ++ series : typing.Sequence<+T_co>[str] ++ storage : typing.Mapping<~KT, +VT_co>[str, ~CharmStorage]<~CharmStorage> ++ subordinate : bool ++ summary : str ++ tags : typing.Sequence<+T_co>[str] ++ terms : typing.Sequence<+T_co>[str] ++ ''' ++ self.categories = categories ++ self.description = description ++ self.extra_bindings = extra_bindings ++ self.min_juju_version = min_juju_version ++ self.name = name ++ self.payload_classes = payload_classes ++ self.peers = peers ++ self.provides = provides ++ self.requires = requires ++ self.resources = resources ++ self.series = series ++ self.storage = storage ++ self.subordinate = subordinate ++ self.summary = summary ++ self.tags = tags ++ self.terms = terms ++ ++ ++ ++class CharmMetric(Type): ++ _toSchema = {'description': 'description', 'type_': 'type'} ++ _toPy = {'description': 'description', 'type': 'type_'} ++ def __init__(self, description=None, type_=None, **unknown_fields): ++ ''' ++ description : str ++ type_ : str ++ ''' ++ self.description = description ++ self.type_ = type_ ++ ++ ++ ++class CharmMetrics(Type): ++ _toSchema = {'metrics': 'metrics', 'plan': 'plan'} ++ _toPy = {'metrics': 'metrics', 'plan': 'plan'} ++ def __init__(self, metrics=None, plan=None, **unknown_fields): ++ ''' ++ metrics : typing.Mapping<~KT, +VT_co>[str, ~CharmMetric]<~CharmMetric> ++ plan : CharmPlan ++ ''' ++ self.metrics = metrics ++ self.plan = CharmPlan.from_json(plan) if plan else None ++ ++ ++ ++class CharmOption(Type): ++ _toSchema = {'default': 'default', 'description': 'description', 'type_': 'type'} ++ _toPy = {'default': 'default', 'description': 'description', 'type': 'type_'} ++ def __init__(self, default=None, description=None, type_=None, **unknown_fields): ++ ''' ++ default : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ description : str ++ type_ : str ++ ''' ++ self.default = default ++ self.description = description ++ self.type_ = type_ ++ ++ ++ ++class CharmPayloadClass(Type): ++ _toSchema = {'name': 'name', 'type_': 'type'} ++ _toPy = {'name': 'name', 'type': 'type_'} ++ def __init__(self, name=None, type_=None, **unknown_fields): ++ ''' ++ name : str ++ type_ : str ++ ''' ++ self.name = name ++ self.type_ = type_ ++ ++ ++ ++class CharmPlan(Type): ++ _toSchema = {'required': 'required'} ++ _toPy = {'required': 'required'} ++ def __init__(self, required=None, **unknown_fields): ++ ''' ++ required : bool ++ ''' ++ self.required = required ++ ++ ++ ++class CharmRelation(Type): ++ _toSchema = {'interface': 'interface', 'limit': 'limit', 'name': 'name', 'optional': 'optional', 'role': 'role', 'scope': 'scope'} ++ _toPy = {'interface': 'interface', 'limit': 'limit', 'name': 'name', 'optional': 'optional', 'role': 'role', 'scope': 'scope'} ++ def __init__(self, interface=None, limit=None, name=None, optional=None, role=None, scope=None, **unknown_fields): ++ ''' ++ interface : str ++ limit : int ++ name : str ++ optional : bool ++ role : str ++ scope : str ++ ''' ++ self.interface = interface ++ self.limit = limit ++ self.name = name ++ self.optional = optional ++ self.role = role ++ self.scope = scope ++ ++ ++ ++class CharmResource(Type): ++ _toSchema = {'description': 'description', 'fingerprint': 'fingerprint', 'name': 'name', 'origin': 'origin', 'path': 'path', 'revision': 'revision', 'size': 'size', 'type_': 'type'} ++ _toPy = {'description': 'description', 'fingerprint': 'fingerprint', 'name': 'name', 'origin': 'origin', 'path': 'path', 'revision': 'revision', 'size': 'size', 'type': 'type_'} ++ def __init__(self, description=None, fingerprint=None, name=None, origin=None, path=None, revision=None, size=None, type_=None, **unknown_fields): ++ ''' ++ description : str ++ fingerprint : typing.Sequence<+T_co>[int] ++ name : str ++ origin : str ++ path : str ++ revision : int ++ size : int ++ type_ : str ++ ''' ++ self.description = description ++ self.fingerprint = fingerprint ++ self.name = name ++ self.origin = origin ++ self.path = path ++ self.revision = revision ++ self.size = size ++ self.type_ = type_ ++ ++ ++ ++class CharmResourceMeta(Type): ++ _toSchema = {'description': 'description', 'name': 'name', 'path': 'path', 'type_': 'type'} ++ _toPy = {'description': 'description', 'name': 'name', 'path': 'path', 'type': 'type_'} ++ def __init__(self, description=None, name=None, path=None, type_=None, **unknown_fields): ++ ''' ++ description : str ++ name : str ++ path : str ++ type_ : str ++ ''' ++ self.description = description ++ self.name = name ++ self.path = path ++ self.type_ = type_ ++ ++ ++ ++class CharmStorage(Type): ++ _toSchema = {'count_max': 'count-max', 'count_min': 'count-min', 'description': 'description', 'location': 'location', 'minimum_size': 'minimum-size', 'name': 'name', 'properties': 'properties', 'read_only': 'read-only', 'shared': 'shared', 'type_': 'type'} ++ _toPy = {'count-max': 'count_max', 'count-min': 'count_min', 'description': 'description', 'location': 'location', 'minimum-size': 'minimum_size', 'name': 'name', 'properties': 'properties', 'read-only': 'read_only', 'shared': 'shared', 'type': 'type_'} ++ def __init__(self, count_max=None, count_min=None, description=None, location=None, minimum_size=None, name=None, properties=None, read_only=None, shared=None, type_=None, **unknown_fields): ++ ''' ++ count_max : int ++ count_min : int ++ description : str ++ location : str ++ minimum_size : int ++ name : str ++ properties : typing.Sequence<+T_co>[str] ++ read_only : bool ++ shared : bool ++ type_ : str ++ ''' ++ self.count_max = count_max ++ self.count_min = count_min ++ self.description = description ++ self.location = location ++ self.minimum_size = minimum_size ++ self.name = name ++ self.properties = properties ++ self.read_only = read_only ++ self.shared = shared ++ self.type_ = type_ ++ ++ ++ ++class CharmURL(Type): ++ _toSchema = {'url': 'url'} ++ _toPy = {'url': 'url'} ++ def __init__(self, url=None, **unknown_fields): ++ ''' ++ url : str ++ ''' ++ self.url = url ++ ++ ++ ++class CharmURLs(Type): ++ _toSchema = {'urls': 'urls'} ++ _toPy = {'urls': 'urls'} ++ def __init__(self, urls=None, **unknown_fields): ++ ''' ++ urls : typing.Sequence<+T_co>[~CharmURL]<~CharmURL> ++ ''' ++ self.urls = [CharmURL.from_json(o) for o in urls or []] ++ ++ ++ ++class CharmsList(Type): ++ _toSchema = {'names': 'names'} ++ _toPy = {'names': 'names'} ++ def __init__(self, names=None, **unknown_fields): ++ ''' ++ names : typing.Sequence<+T_co>[str] ++ ''' ++ self.names = names ++ ++ ++ ++class CharmsListResult(Type): ++ _toSchema = {'charm_urls': 'charm-urls'} ++ _toPy = {'charm-urls': 'charm_urls'} ++ def __init__(self, charm_urls=None, **unknown_fields): ++ ''' ++ charm_urls : typing.Sequence<+T_co>[str] ++ ''' ++ self.charm_urls = charm_urls ++ ++ ++ ++class ClaimLeadershipBulkParams(Type): ++ _toSchema = {'params': 'params'} ++ _toPy = {'params': 'params'} ++ def __init__(self, params=None, **unknown_fields): ++ ''' ++ params : typing.Sequence<+T_co>[~ClaimLeadershipParams]<~ClaimLeadershipParams> ++ ''' ++ self.params = [ClaimLeadershipParams.from_json(o) for o in params or []] ++ ++ ++ ++class ClaimLeadershipBulkResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ self.results = [ErrorResult.from_json(o) for o in results or []] ++ ++ ++ ++class ClaimLeadershipParams(Type): ++ _toSchema = {'application_tag': 'application-tag', 'duration': 'duration', 'unit_tag': 'unit-tag'} ++ _toPy = {'application-tag': 'application_tag', 'duration': 'duration', 'unit-tag': 'unit_tag'} ++ def __init__(self, application_tag=None, duration=None, unit_tag=None, **unknown_fields): ++ ''' ++ application_tag : str ++ duration : float ++ unit_tag : str ++ ''' ++ self.application_tag = application_tag ++ self.duration = duration ++ self.unit_tag = unit_tag ++ ++ ++ ++class Cloud(Type): ++ _toSchema = {'auth_types': 'auth-types', 'endpoint': 'endpoint', 'identity_endpoint': 'identity-endpoint', 'regions': 'regions', 'storage_endpoint': 'storage-endpoint', 'type_': 'type'} ++ _toPy = {'auth-types': 'auth_types', 'endpoint': 'endpoint', 'identity-endpoint': 'identity_endpoint', 'regions': 'regions', 'storage-endpoint': 'storage_endpoint', 'type': 'type_'} ++ def __init__(self, auth_types=None, endpoint=None, identity_endpoint=None, regions=None, storage_endpoint=None, type_=None, **unknown_fields): ++ ''' ++ auth_types : typing.Sequence<+T_co>[str] ++ endpoint : str ++ identity_endpoint : str ++ regions : typing.Sequence<+T_co>[~CloudRegion]<~CloudRegion> ++ storage_endpoint : str ++ type_ : str ++ ''' ++ self.auth_types = auth_types ++ self.endpoint = endpoint ++ self.identity_endpoint = identity_endpoint ++ self.regions = [CloudRegion.from_json(o) for o in regions or []] ++ self.storage_endpoint = storage_endpoint ++ self.type_ = type_ ++ ++ ++ ++class CloudCredential(Type): ++ _toSchema = {'attrs': 'attrs', 'auth_type': 'auth-type', 'redacted': 'redacted'} ++ _toPy = {'attrs': 'attrs', 'auth-type': 'auth_type', 'redacted': 'redacted'} ++ def __init__(self, attrs=None, auth_type=None, redacted=None, **unknown_fields): ++ ''' ++ attrs : typing.Mapping<~KT, +VT_co>[str, str] ++ auth_type : str ++ redacted : typing.Sequence<+T_co>[str] ++ ''' ++ self.attrs = attrs ++ self.auth_type = auth_type ++ self.redacted = redacted ++ ++ ++ ++class CloudCredentialResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : CloudCredential ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = CloudCredential.from_json(result) if result else None ++ ++ ++ ++class CloudCredentialResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~CloudCredentialResult]<~CloudCredentialResult> ++ ''' ++ self.results = [CloudCredentialResult.from_json(o) for o in results or []] ++ ++ ++ ++class CloudImageMetadata(Type): ++ _toSchema = {'arch': 'arch', 'image_id': 'image-id', 'priority': 'priority', 'region': 'region', 'root_storage_size': 'root-storage-size', 'root_storage_type': 'root-storage-type', 'series': 'series', 'source': 'source', 'stream': 'stream', 'version': 'version', 'virt_type': 'virt-type'} ++ _toPy = {'arch': 'arch', 'image-id': 'image_id', 'priority': 'priority', 'region': 'region', 'root-storage-size': 'root_storage_size', 'root-storage-type': 'root_storage_type', 'series': 'series', 'source': 'source', 'stream': 'stream', 'version': 'version', 'virt-type': 'virt_type'} ++ def __init__(self, arch=None, image_id=None, priority=None, region=None, root_storage_size=None, root_storage_type=None, series=None, source=None, stream=None, version=None, virt_type=None, **unknown_fields): ++ ''' ++ arch : str ++ image_id : str ++ priority : int ++ region : str ++ root_storage_size : int ++ root_storage_type : str ++ series : str ++ source : str ++ stream : str ++ version : str ++ virt_type : str ++ ''' ++ self.arch = arch ++ self.image_id = image_id ++ self.priority = priority ++ self.region = region ++ self.root_storage_size = root_storage_size ++ self.root_storage_type = root_storage_type ++ self.series = series ++ self.source = source ++ self.stream = stream ++ self.version = version ++ self.virt_type = virt_type ++ ++ ++ ++class CloudImageMetadataList(Type): ++ _toSchema = {'metadata': 'metadata'} ++ _toPy = {'metadata': 'metadata'} ++ def __init__(self, metadata=None, **unknown_fields): ++ ''' ++ metadata : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata> ++ ''' ++ self.metadata = [CloudImageMetadata.from_json(o) for o in metadata or []] ++ ++ ++ ++class CloudInstanceTypesConstraint(Type): ++ _toSchema = {'cloud_tag': 'cloud-tag', 'constraints': 'constraints', 'region': 'region'} ++ _toPy = {'cloud-tag': 'cloud_tag', 'constraints': 'constraints', 'region': 'region'} ++ def __init__(self, cloud_tag=None, constraints=None, region=None, **unknown_fields): ++ ''' ++ cloud_tag : str ++ constraints : Value ++ region : str ++ ''' ++ self.cloud_tag = cloud_tag ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.region = region ++ ++ ++ ++class CloudInstanceTypesConstraints(Type): ++ _toSchema = {'constraints': 'constraints'} ++ _toPy = {'constraints': 'constraints'} ++ def __init__(self, constraints=None, **unknown_fields): ++ ''' ++ constraints : typing.Sequence<+T_co>[~CloudInstanceTypesConstraint]<~CloudInstanceTypesConstraint> ++ ''' ++ self.constraints = [CloudInstanceTypesConstraint.from_json(o) for o in constraints or []] ++ ++ ++ ++class CloudRegion(Type): ++ _toSchema = {'endpoint': 'endpoint', 'identity_endpoint': 'identity-endpoint', 'name': 'name', 'storage_endpoint': 'storage-endpoint'} ++ _toPy = {'endpoint': 'endpoint', 'identity-endpoint': 'identity_endpoint', 'name': 'name', 'storage-endpoint': 'storage_endpoint'} ++ def __init__(self, endpoint=None, identity_endpoint=None, name=None, storage_endpoint=None, **unknown_fields): ++ ''' ++ endpoint : str ++ identity_endpoint : str ++ name : str ++ storage_endpoint : str ++ ''' ++ self.endpoint = endpoint ++ self.identity_endpoint = identity_endpoint ++ self.name = name ++ self.storage_endpoint = storage_endpoint ++ ++ ++ ++class CloudResult(Type): ++ _toSchema = {'cloud': 'cloud', 'error': 'error'} ++ _toPy = {'cloud': 'cloud', 'error': 'error'} ++ def __init__(self, cloud=None, error=None, **unknown_fields): ++ ''' ++ cloud : Cloud ++ error : Error ++ ''' ++ self.cloud = Cloud.from_json(cloud) if cloud else None ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class CloudResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~CloudResult]<~CloudResult> ++ ''' ++ self.results = [CloudResult.from_json(o) for o in results or []] ++ ++ ++ ++class CloudSpec(Type): ++ _toSchema = {'credential': 'credential', 'endpoint': 'endpoint', 'identity_endpoint': 'identity-endpoint', 'name': 'name', 'region': 'region', 'storage_endpoint': 'storage-endpoint', 'type_': 'type'} ++ _toPy = {'credential': 'credential', 'endpoint': 'endpoint', 'identity-endpoint': 'identity_endpoint', 'name': 'name', 'region': 'region', 'storage-endpoint': 'storage_endpoint', 'type': 'type_'} ++ def __init__(self, credential=None, endpoint=None, identity_endpoint=None, name=None, region=None, storage_endpoint=None, type_=None, **unknown_fields): ++ ''' ++ credential : CloudCredential ++ endpoint : str ++ identity_endpoint : str ++ name : str ++ region : str ++ storage_endpoint : str ++ type_ : str ++ ''' ++ self.credential = CloudCredential.from_json(credential) if credential else None ++ self.endpoint = endpoint ++ self.identity_endpoint = identity_endpoint ++ self.name = name ++ self.region = region ++ self.storage_endpoint = storage_endpoint ++ self.type_ = type_ ++ ++ ++ ++class CloudSpecResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : CloudSpec ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = CloudSpec.from_json(result) if result else None ++ ++ ++ ++class CloudSpecResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~CloudSpecResult]<~CloudSpecResult> ++ ''' ++ self.results = [CloudSpecResult.from_json(o) for o in results or []] ++ ++ ++ ++class CloudsResult(Type): ++ _toSchema = {'clouds': 'clouds'} ++ _toPy = {'clouds': 'clouds'} ++ def __init__(self, clouds=None, **unknown_fields): ++ ''' ++ clouds : typing.Mapping<~KT, +VT_co>[str, ~Cloud]<~Cloud> ++ ''' ++ self.clouds = clouds ++ ++ ++ ++class ConfigSettingsResult(Type): ++ _toSchema = {'error': 'error', 'settings': 'settings'} ++ _toPy = {'error': 'error', 'settings': 'settings'} ++ def __init__(self, error=None, settings=None, **unknown_fields): ++ ''' ++ error : Error ++ settings : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.settings = settings ++ ++ ++ ++class ConfigSettingsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ConfigSettingsResult]<~ConfigSettingsResult> ++ ''' ++ self.results = [ConfigSettingsResult.from_json(o) for o in results or []] ++ ++ ++ ++class ConfigValue(Type): ++ _toSchema = {'source': 'source', 'value': 'value'} ++ _toPy = {'source': 'source', 'value': 'value'} ++ def __init__(self, source=None, value=None, **unknown_fields): ++ ''' ++ source : str ++ value : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.source = source ++ self.value = value ++ ++ ++ ++class Constraints(Type): ++ _toSchema = {'count': 'Count', 'pool': 'Pool', 'size': 'Size'} ++ _toPy = {'Count': 'count', 'Pool': 'pool', 'Size': 'size'} ++ def __init__(self, count=None, pool=None, size=None, **unknown_fields): ++ ''' ++ count : int ++ pool : str ++ size : int ++ ''' ++ self.count = count ++ self.pool = pool ++ self.size = size ++ ++ ++ ++class ConstraintsResult(Type): ++ _toSchema = {'constraints': 'constraints', 'error': 'error'} ++ _toPy = {'constraints': 'constraints', 'error': 'error'} ++ def __init__(self, constraints=None, error=None, **unknown_fields): ++ ''' ++ constraints : Value ++ error : Error ++ ''' ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class ConstraintsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ConstraintsResult]<~ConstraintsResult> ++ ''' ++ self.results = [ConstraintsResult.from_json(o) for o in results or []] ++ ++ ++ ++class ConsumeApplicationArg(Type): ++ _toSchema = {'application_alias': 'application-alias', 'application_url': 'application-url'} ++ _toPy = {'application-alias': 'application_alias', 'application-url': 'application_url'} ++ def __init__(self, application_alias=None, application_url=None, **unknown_fields): ++ ''' ++ application_alias : str ++ application_url : str ++ ''' ++ self.application_alias = application_alias ++ self.application_url = application_url ++ ++ ++ ++class ConsumeApplicationArgs(Type): ++ _toSchema = {'args': 'args'} ++ _toPy = {'args': 'args'} ++ def __init__(self, args=None, **unknown_fields): ++ ''' ++ args : typing.Sequence<+T_co>[~ConsumeApplicationArg]<~ConsumeApplicationArg> ++ ''' ++ self.args = [ConsumeApplicationArg.from_json(o) for o in args or []] ++ ++ ++ ++class ConsumeApplicationResult(Type): ++ _toSchema = {'error': 'error', 'local_name': 'local-name'} ++ _toPy = {'error': 'error', 'local-name': 'local_name'} ++ def __init__(self, error=None, local_name=None, **unknown_fields): ++ ''' ++ error : Error ++ local_name : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.local_name = local_name ++ ++ ++ ++class ConsumeApplicationResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ConsumeApplicationResult]<~ConsumeApplicationResult> ++ ''' ++ self.results = [ConsumeApplicationResult.from_json(o) for o in results or []] ++ ++ ++ ++class ContainerConfig(Type): ++ _toSchema = {'apt_mirror': 'apt-mirror', 'apt_proxy': 'apt-proxy', 'authorized_keys': 'authorized-keys', 'provider_type': 'provider-type', 'proxy': 'proxy', 'ssl_hostname_verification': 'ssl-hostname-verification', 'updatebehavior': 'UpdateBehavior'} ++ _toPy = {'UpdateBehavior': 'updatebehavior', 'apt-mirror': 'apt_mirror', 'apt-proxy': 'apt_proxy', 'authorized-keys': 'authorized_keys', 'provider-type': 'provider_type', 'proxy': 'proxy', 'ssl-hostname-verification': 'ssl_hostname_verification'} ++ def __init__(self, updatebehavior=None, apt_mirror=None, apt_proxy=None, authorized_keys=None, provider_type=None, proxy=None, ssl_hostname_verification=None, **unknown_fields): ++ ''' ++ updatebehavior : UpdateBehavior ++ apt_mirror : str ++ apt_proxy : Settings ++ authorized_keys : str ++ provider_type : str ++ proxy : Settings ++ ssl_hostname_verification : bool ++ ''' ++ self.updatebehavior = UpdateBehavior.from_json(updatebehavior) if updatebehavior else None ++ self.apt_mirror = apt_mirror ++ self.apt_proxy = Settings.from_json(apt_proxy) if apt_proxy else None ++ self.authorized_keys = authorized_keys ++ self.provider_type = provider_type ++ self.proxy = Settings.from_json(proxy) if proxy else None ++ self.ssl_hostname_verification = ssl_hostname_verification ++ ++ ++ ++class ContainerManagerConfig(Type): ++ _toSchema = {'config': 'config'} ++ _toPy = {'config': 'config'} ++ def __init__(self, config=None, **unknown_fields): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, str] ++ ''' ++ self.config = config ++ ++ ++ ++class ContainerManagerConfigParams(Type): ++ _toSchema = {'type_': 'type'} ++ _toPy = {'type': 'type_'} ++ def __init__(self, type_=None, **unknown_fields): ++ ''' ++ type_ : str ++ ''' ++ self.type_ = type_ ++ ++ ++ ++class ControllerConfigResult(Type): ++ _toSchema = {'config': 'config'} ++ _toPy = {'config': 'config'} ++ def __init__(self, config=None, **unknown_fields): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.config = config ++ ++ ++ ++class ControllersChangeResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : ControllersChanges ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = ControllersChanges.from_json(result) if result else None ++ ++ ++ ++class ControllersChangeResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ControllersChangeResult]<~ControllersChangeResult> ++ ''' ++ self.results = [ControllersChangeResult.from_json(o) for o in results or []] ++ ++ ++ ++class ControllersChanges(Type): ++ _toSchema = {'added': 'added', 'converted': 'converted', 'demoted': 'demoted', 'maintained': 'maintained', 'promoted': 'promoted', 'removed': 'removed'} ++ _toPy = {'added': 'added', 'converted': 'converted', 'demoted': 'demoted', 'maintained': 'maintained', 'promoted': 'promoted', 'removed': 'removed'} ++ def __init__(self, added=None, converted=None, demoted=None, maintained=None, promoted=None, removed=None, **unknown_fields): ++ ''' ++ added : typing.Sequence<+T_co>[str] ++ converted : typing.Sequence<+T_co>[str] ++ demoted : typing.Sequence<+T_co>[str] ++ maintained : typing.Sequence<+T_co>[str] ++ promoted : typing.Sequence<+T_co>[str] ++ removed : typing.Sequence<+T_co>[str] ++ ''' ++ self.added = added ++ self.converted = converted ++ self.demoted = demoted ++ self.maintained = maintained ++ self.promoted = promoted ++ self.removed = removed ++ ++ ++ ++class ControllersSpec(Type): ++ _toSchema = {'constraints': 'constraints', 'num_controllers': 'num-controllers', 'placement': 'placement', 'series': 'series'} ++ _toPy = {'constraints': 'constraints', 'num-controllers': 'num_controllers', 'placement': 'placement', 'series': 'series'} ++ def __init__(self, constraints=None, num_controllers=None, placement=None, series=None, **unknown_fields): ++ ''' ++ constraints : Value ++ num_controllers : int ++ placement : typing.Sequence<+T_co>[str] ++ series : str ++ ''' ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.num_controllers = num_controllers ++ self.placement = placement ++ self.series = series ++ ++ ++ ++class ControllersSpecs(Type): ++ _toSchema = {'specs': 'specs'} ++ _toPy = {'specs': 'specs'} ++ def __init__(self, specs=None, **unknown_fields): ++ ''' ++ specs : typing.Sequence<+T_co>[~ControllersSpec]<~ControllersSpec> ++ ''' ++ self.specs = [ControllersSpec.from_json(o) for o in specs or []] ++ ++ ++ ++class CreateSpaceParams(Type): ++ _toSchema = {'provider_id': 'provider-id', 'public': 'public', 'space_tag': 'space-tag', 'subnet_tags': 'subnet-tags'} ++ _toPy = {'provider-id': 'provider_id', 'public': 'public', 'space-tag': 'space_tag', 'subnet-tags': 'subnet_tags'} ++ def __init__(self, provider_id=None, public=None, space_tag=None, subnet_tags=None, **unknown_fields): ++ ''' ++ provider_id : str ++ public : bool ++ space_tag : str ++ subnet_tags : typing.Sequence<+T_co>[str] ++ ''' ++ self.provider_id = provider_id ++ self.public = public ++ self.space_tag = space_tag ++ self.subnet_tags = subnet_tags ++ ++ ++ ++class CreateSpacesParams(Type): ++ _toSchema = {'spaces': 'spaces'} ++ _toPy = {'spaces': 'spaces'} ++ def __init__(self, spaces=None, **unknown_fields): ++ ''' ++ spaces : typing.Sequence<+T_co>[~CreateSpaceParams]<~CreateSpaceParams> ++ ''' ++ self.spaces = [CreateSpaceParams.from_json(o) for o in spaces or []] ++ ++ ++ ++class Delta(Type): ++ _toSchema = {'entity': 'entity', 'removed': 'removed'} ++ _toPy = {'entity': 'entity', 'removed': 'removed'} ++ def __init__(self, entity=None, removed=None, **unknown_fields): ++ ''' ++ entity : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ removed : bool ++ ''' ++ self.entity = entity ++ self.removed = removed ++ ++ ++ ++class DeployerConnectionValues(Type): ++ _toSchema = {'api_addresses': 'api-addresses', 'state_addresses': 'state-addresses'} ++ _toPy = {'api-addresses': 'api_addresses', 'state-addresses': 'state_addresses'} ++ def __init__(self, api_addresses=None, state_addresses=None, **unknown_fields): ++ ''' ++ api_addresses : typing.Sequence<+T_co>[str] ++ state_addresses : typing.Sequence<+T_co>[str] ++ ''' ++ self.api_addresses = api_addresses ++ self.state_addresses = state_addresses ++ ++ ++ ++class DestroyApplicationInfo(Type): ++ _toSchema = {'destroyed_storage': 'destroyed-storage', 'destroyed_units': 'destroyed-units', 'detached_storage': 'detached-storage'} ++ _toPy = {'destroyed-storage': 'destroyed_storage', 'destroyed-units': 'destroyed_units', 'detached-storage': 'detached_storage'} ++ def __init__(self, destroyed_storage=None, destroyed_units=None, detached_storage=None, **unknown_fields): ++ ''' ++ destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity> ++ destroyed_units : typing.Sequence<+T_co>[~Entity]<~Entity> ++ detached_storage : typing.Sequence<+T_co>[~Entity]<~Entity> ++ ''' ++ self.destroyed_storage = [Entity.from_json(o) for o in destroyed_storage or []] ++ self.destroyed_units = [Entity.from_json(o) for o in destroyed_units or []] ++ self.detached_storage = [Entity.from_json(o) for o in detached_storage or []] ++ ++ ++ ++class DestroyApplicationResult(Type): ++ _toSchema = {'error': 'error', 'info': 'info'} ++ _toPy = {'error': 'error', 'info': 'info'} ++ def __init__(self, error=None, info=None, **unknown_fields): ++ ''' ++ error : Error ++ info : DestroyApplicationInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.info = DestroyApplicationInfo.from_json(info) if info else None ++ ++ ++ ++class DestroyApplicationResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~DestroyApplicationResult]<~DestroyApplicationResult> ++ ''' ++ self.results = [DestroyApplicationResult.from_json(o) for o in results or []] ++ ++ ++ ++class DestroyApplicationUnits(Type): ++ _toSchema = {'unit_names': 'unit-names'} ++ _toPy = {'unit-names': 'unit_names'} ++ def __init__(self, unit_names=None, **unknown_fields): ++ ''' ++ unit_names : typing.Sequence<+T_co>[str] ++ ''' ++ self.unit_names = unit_names ++ ++ ++ ++class DestroyControllerArgs(Type): ++ _toSchema = {'destroy_models': 'destroy-models'} ++ _toPy = {'destroy-models': 'destroy_models'} ++ def __init__(self, destroy_models=None, **unknown_fields): ++ ''' ++ destroy_models : bool ++ ''' ++ self.destroy_models = destroy_models ++ ++ ++ ++class DestroyMachineInfo(Type): ++ _toSchema = {'destroyed_storage': 'destroyed-storage', 'destroyed_units': 'destroyed-units', 'detached_storage': 'detached-storage'} ++ _toPy = {'destroyed-storage': 'destroyed_storage', 'destroyed-units': 'destroyed_units', 'detached-storage': 'detached_storage'} ++ def __init__(self, destroyed_storage=None, destroyed_units=None, detached_storage=None, **unknown_fields): ++ ''' ++ destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity> ++ destroyed_units : typing.Sequence<+T_co>[~Entity]<~Entity> ++ detached_storage : typing.Sequence<+T_co>[~Entity]<~Entity> ++ ''' ++ self.destroyed_storage = [Entity.from_json(o) for o in destroyed_storage or []] ++ self.destroyed_units = [Entity.from_json(o) for o in destroyed_units or []] ++ self.detached_storage = [Entity.from_json(o) for o in detached_storage or []] ++ ++ ++ ++class DestroyMachineResult(Type): ++ _toSchema = {'error': 'error', 'info': 'info'} ++ _toPy = {'error': 'error', 'info': 'info'} ++ def __init__(self, error=None, info=None, **unknown_fields): ++ ''' ++ error : Error ++ info : DestroyMachineInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.info = DestroyMachineInfo.from_json(info) if info else None ++ ++ ++ ++class DestroyMachineResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~DestroyMachineResult]<~DestroyMachineResult> ++ ''' ++ self.results = [DestroyMachineResult.from_json(o) for o in results or []] ++ ++ ++ ++class DestroyMachines(Type): ++ _toSchema = {'force': 'force', 'machine_names': 'machine-names'} ++ _toPy = {'force': 'force', 'machine-names': 'machine_names'} ++ def __init__(self, force=None, machine_names=None, **unknown_fields): ++ ''' ++ force : bool ++ machine_names : typing.Sequence<+T_co>[str] ++ ''' ++ self.force = force ++ self.machine_names = machine_names ++ ++ ++ ++class DestroyRelation(Type): ++ _toSchema = {'endpoints': 'endpoints'} ++ _toPy = {'endpoints': 'endpoints'} ++ def __init__(self, endpoints=None, **unknown_fields): ++ ''' ++ endpoints : typing.Sequence<+T_co>[str] ++ ''' ++ self.endpoints = endpoints ++ ++ ++ ++class DestroyUnitInfo(Type): ++ _toSchema = {'destroyed_storage': 'destroyed-storage', 'detached_storage': 'detached-storage'} ++ _toPy = {'destroyed-storage': 'destroyed_storage', 'detached-storage': 'detached_storage'} ++ def __init__(self, destroyed_storage=None, detached_storage=None, **unknown_fields): ++ ''' ++ destroyed_storage : typing.Sequence<+T_co>[~Entity]<~Entity> ++ detached_storage : typing.Sequence<+T_co>[~Entity]<~Entity> ++ ''' ++ self.destroyed_storage = [Entity.from_json(o) for o in destroyed_storage or []] ++ self.detached_storage = [Entity.from_json(o) for o in detached_storage or []] ++ ++ ++ ++class DestroyUnitResult(Type): ++ _toSchema = {'error': 'error', 'info': 'info'} ++ _toPy = {'error': 'error', 'info': 'info'} ++ def __init__(self, error=None, info=None, **unknown_fields): ++ ''' ++ error : Error ++ info : DestroyUnitInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.info = DestroyUnitInfo.from_json(info) if info else None ++ ++ ++ ++class DestroyUnitResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~DestroyUnitResult]<~DestroyUnitResult> ++ ''' ++ self.results = [DestroyUnitResult.from_json(o) for o in results or []] ++ ++ ++ ++class DetailedStatus(Type): ++ _toSchema = {'data': 'data', 'err': 'err', 'info': 'info', 'kind': 'kind', 'life': 'life', 'since': 'since', 'status': 'status', 'version': 'version'} ++ _toPy = {'data': 'data', 'err': 'err', 'info': 'info', 'kind': 'kind', 'life': 'life', 'since': 'since', 'status': 'status', 'version': 'version'} ++ def __init__(self, data=None, err=None, info=None, kind=None, life=None, since=None, status=None, version=None, **unknown_fields): ++ ''' ++ data : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ err : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ info : str ++ kind : str ++ life : str ++ since : str ++ status : str ++ version : str ++ ''' ++ self.data = data ++ self.err = err ++ self.info = info ++ self.kind = kind ++ self.life = life ++ self.since = since ++ self.status = status ++ self.version = version ++ ++ ++ ++class DeviceBridgeInfo(Type): ++ _toSchema = {'bridge_name': 'bridge-name', 'host_device_name': 'host-device-name'} ++ _toPy = {'bridge-name': 'bridge_name', 'host-device-name': 'host_device_name'} ++ def __init__(self, bridge_name=None, host_device_name=None, **unknown_fields): ++ ''' ++ bridge_name : str ++ host_device_name : str ++ ''' ++ self.bridge_name = bridge_name ++ self.host_device_name = host_device_name ++ ++ ++ ++class DiscoverSpacesResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ProviderSpace]<~ProviderSpace> ++ ''' ++ self.results = [ProviderSpace.from_json(o) for o in results or []] ++ ++ ++ ++class DistributionGroupResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : typing.Sequence<+T_co>[str] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = result ++ ++ ++ ++class DistributionGroupResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~DistributionGroupResult]<~DistributionGroupResult> ++ ''' ++ self.results = [DistributionGroupResult.from_json(o) for o in results or []] ++ ++ ++ ++class DumpModelRequest(Type): ++ _toSchema = {'entities': 'entities', 'simplified': 'simplified'} ++ _toPy = {'entities': 'entities', 'simplified': 'simplified'} ++ def __init__(self, entities=None, simplified=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ simplified : bool ++ ''' ++ self.entities = [Entity.from_json(o) for o in entities or []] ++ self.simplified = simplified ++ ++ ++ ++class Endpoint(Type): ++ _toSchema = {'application_name': 'application-name', 'relation': 'relation'} ++ _toPy = {'application-name': 'application_name', 'relation': 'relation'} ++ def __init__(self, application_name=None, relation=None, **unknown_fields): ++ ''' ++ application_name : str ++ relation : CharmRelation ++ ''' ++ self.application_name = application_name ++ self.relation = CharmRelation.from_json(relation) if relation else None ++ ++ ++ ++class EndpointStatus(Type): ++ _toSchema = {'application': 'application', 'name': 'name', 'role': 'role', 'subordinate': 'subordinate'} ++ _toPy = {'application': 'application', 'name': 'name', 'role': 'role', 'subordinate': 'subordinate'} ++ def __init__(self, application=None, name=None, role=None, subordinate=None, **unknown_fields): ++ ''' ++ application : str ++ name : str ++ role : str ++ subordinate : bool ++ ''' ++ self.application = application ++ self.name = name ++ self.role = role ++ self.subordinate = subordinate ++ ++ ++ ++class Entities(Type): ++ _toSchema = {'entities': 'entities'} ++ _toPy = {'entities': 'entities'} ++ def __init__(self, entities=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ ''' ++ self.entities = [Entity.from_json(o) for o in entities or []] ++ ++ ++ ++class EntitiesCharmURL(Type): ++ _toSchema = {'entities': 'entities'} ++ _toPy = {'entities': 'entities'} ++ def __init__(self, entities=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityCharmURL]<~EntityCharmURL> ++ ''' ++ self.entities = [EntityCharmURL.from_json(o) for o in entities or []] ++ ++ ++ ++class EntitiesPortRanges(Type): ++ _toSchema = {'entities': 'entities'} ++ _toPy = {'entities': 'entities'} ++ def __init__(self, entities=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityPortRange]<~EntityPortRange> ++ ''' ++ self.entities = [EntityPortRange.from_json(o) for o in entities or []] ++ ++ ++ ++class EntitiesResult(Type): ++ _toSchema = {'entities': 'entities', 'error': 'error'} ++ _toPy = {'entities': 'entities', 'error': 'error'} ++ def __init__(self, entities=None, error=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ error : Error ++ ''' ++ self.entities = [Entity.from_json(o) for o in entities or []] ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class EntitiesResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~EntitiesResult]<~EntitiesResult> ++ ''' ++ self.results = [EntitiesResult.from_json(o) for o in results or []] ++ ++ ++ ++class EntitiesVersion(Type): ++ _toSchema = {'agent_tools': 'agent-tools'} ++ _toPy = {'agent-tools': 'agent_tools'} ++ def __init__(self, agent_tools=None, **unknown_fields): ++ ''' ++ agent_tools : typing.Sequence<+T_co>[~EntityVersion]<~EntityVersion> ++ ''' ++ self.agent_tools = [EntityVersion.from_json(o) for o in agent_tools or []] ++ ++ ++ ++class EntitiesWatchResult(Type): ++ _toSchema = {'changes': 'changes', 'error': 'error', 'watcher_id': 'watcher-id'} ++ _toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'} ++ def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields): ++ ''' ++ changes : typing.Sequence<+T_co>[str] ++ error : Error ++ watcher_id : str ++ ''' ++ self.changes = changes ++ self.error = Error.from_json(error) if error else None ++ self.watcher_id = watcher_id ++ ++ ++ ++class Entity(Type): ++ _toSchema = {'tag': 'tag'} ++ _toPy = {'tag': 'tag'} ++ def __init__(self, tag=None, **unknown_fields): ++ ''' ++ tag : str ++ ''' ++ self.tag = tag ++ ++ ++ ++class EntityAnnotations(Type): ++ _toSchema = {'annotations': 'annotations', 'entity': 'entity'} ++ _toPy = {'annotations': 'annotations', 'entity': 'entity'} ++ def __init__(self, annotations=None, entity=None, **unknown_fields): ++ ''' ++ annotations : typing.Mapping<~KT, +VT_co>[str, str] ++ entity : str ++ ''' ++ self.annotations = annotations ++ self.entity = entity ++ ++ ++ ++class EntityCharmURL(Type): ++ _toSchema = {'charm_url': 'charm-url', 'tag': 'tag'} ++ _toPy = {'charm-url': 'charm_url', 'tag': 'tag'} ++ def __init__(self, charm_url=None, tag=None, **unknown_fields): ++ ''' ++ charm_url : str ++ tag : str ++ ''' ++ self.charm_url = charm_url ++ self.tag = tag ++ ++ ++ ++class EntityMetrics(Type): ++ _toSchema = {'error': 'error', 'metrics': 'metrics'} ++ _toPy = {'error': 'error', 'metrics': 'metrics'} ++ def __init__(self, error=None, metrics=None, **unknown_fields): ++ ''' ++ error : Error ++ metrics : typing.Sequence<+T_co>[~MetricResult]<~MetricResult> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.metrics = [MetricResult.from_json(o) for o in metrics or []] ++ ++ ++ ++class EntityPassword(Type): ++ _toSchema = {'password': 'password', 'tag': 'tag'} ++ _toPy = {'password': 'password', 'tag': 'tag'} ++ def __init__(self, password=None, tag=None, **unknown_fields): ++ ''' ++ password : str ++ tag : str ++ ''' ++ self.password = password ++ self.tag = tag ++ ++ ++ ++class EntityPasswords(Type): ++ _toSchema = {'changes': 'changes'} ++ _toPy = {'changes': 'changes'} ++ def __init__(self, changes=None, **unknown_fields): ++ ''' ++ changes : typing.Sequence<+T_co>[~EntityPassword]<~EntityPassword> ++ ''' ++ self.changes = [EntityPassword.from_json(o) for o in changes or []] ++ ++ ++ ++class EntityPortRange(Type): ++ _toSchema = {'from_port': 'from-port', 'protocol': 'protocol', 'tag': 'tag', 'to_port': 'to-port'} ++ _toPy = {'from-port': 'from_port', 'protocol': 'protocol', 'tag': 'tag', 'to-port': 'to_port'} ++ def __init__(self, from_port=None, protocol=None, tag=None, to_port=None, **unknown_fields): ++ ''' ++ from_port : int ++ protocol : str ++ tag : str ++ to_port : int ++ ''' ++ self.from_port = from_port ++ self.protocol = protocol ++ self.tag = tag ++ self.to_port = to_port ++ ++ ++ ++class EntityStatus(Type): ++ _toSchema = {'data': 'data', 'info': 'info', 'since': 'since', 'status': 'status'} ++ _toPy = {'data': 'data', 'info': 'info', 'since': 'since', 'status': 'status'} ++ def __init__(self, data=None, info=None, since=None, status=None, **unknown_fields): ++ ''' ++ data : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ info : str ++ since : str ++ status : str ++ ''' ++ self.data = data ++ self.info = info ++ self.since = since ++ self.status = status ++ ++ ++ ++class EntityStatusArgs(Type): ++ _toSchema = {'data': 'data', 'info': 'info', 'status': 'status', 'tag': 'tag'} ++ _toPy = {'data': 'data', 'info': 'info', 'status': 'status', 'tag': 'tag'} ++ def __init__(self, data=None, info=None, status=None, tag=None, **unknown_fields): ++ ''' ++ data : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ info : str ++ status : str ++ tag : str ++ ''' ++ self.data = data ++ self.info = info ++ self.status = status ++ self.tag = tag ++ ++ ++ ++class EntityVersion(Type): ++ _toSchema = {'tag': 'tag', 'tools': 'tools'} ++ _toPy = {'tag': 'tag', 'tools': 'tools'} ++ def __init__(self, tag=None, tools=None, **unknown_fields): ++ ''' ++ tag : str ++ tools : Version ++ ''' ++ self.tag = tag ++ self.tools = Version.from_json(tools) if tools else None ++ ++ ++ ++class EntityWorkloadVersion(Type): ++ _toSchema = {'tag': 'tag', 'workload_version': 'workload-version'} ++ _toPy = {'tag': 'tag', 'workload-version': 'workload_version'} ++ def __init__(self, tag=None, workload_version=None, **unknown_fields): ++ ''' ++ tag : str ++ workload_version : str ++ ''' ++ self.tag = tag ++ self.workload_version = workload_version ++ ++ ++ ++class EntityWorkloadVersions(Type): ++ _toSchema = {'entities': 'entities'} ++ _toPy = {'entities': 'entities'} ++ def __init__(self, entities=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityWorkloadVersion]<~EntityWorkloadVersion> ++ ''' ++ self.entities = [EntityWorkloadVersion.from_json(o) for o in entities or []] ++ ++ ++ ++class EnvListArgs(Type): ++ _toSchema = {'patterns': 'patterns'} ++ _toPy = {'patterns': 'patterns'} ++ def __init__(self, patterns=None, **unknown_fields): ++ ''' ++ patterns : typing.Sequence<+T_co>[str] ++ ''' ++ self.patterns = patterns ++ ++ ++ ++class EnvListResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~Payload]<~Payload> ++ ''' ++ self.results = [Payload.from_json(o) for o in results or []] ++ ++ ++ ++class Error(Type): ++ _toSchema = {'code': 'code', 'info': 'info', 'message': 'message'} ++ _toPy = {'code': 'code', 'info': 'info', 'message': 'message'} ++ def __init__(self, code=None, info=None, message=None, **unknown_fields): ++ ''' ++ code : str ++ info : ErrorInfo ++ message : str ++ ''' ++ self.code = code ++ self.info = ErrorInfo.from_json(info) if info else None ++ self.message = message ++ ++ ++ ++class ErrorInfo(Type): ++ _toSchema = {'macaroon': 'macaroon', 'macaroon_path': 'macaroon-path'} ++ _toPy = {'macaroon': 'macaroon', 'macaroon-path': 'macaroon_path'} ++ def __init__(self, macaroon=None, macaroon_path=None, **unknown_fields): ++ ''' ++ macaroon : Macaroon ++ macaroon_path : str ++ ''' ++ self.macaroon = Macaroon.from_json(macaroon) if macaroon else None ++ self.macaroon_path = macaroon_path ++ ++ ++ ++class ErrorResult(Type): ++ _toSchema = {'error': 'error'} ++ _toPy = {'error': 'error'} ++ def __init__(self, error=None, **unknown_fields): ++ ''' ++ error : Error ++ ''' ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class ErrorResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ErrorResult]<~ErrorResult> ++ ''' ++ self.results = [ErrorResult.from_json(o) for o in results or []] ++ ++ ++ ++class Filesystem(Type): ++ _toSchema = {'filesystem_tag': 'filesystem-tag', 'info': 'info', 'volume_tag': 'volume-tag'} ++ _toPy = {'filesystem-tag': 'filesystem_tag', 'info': 'info', 'volume-tag': 'volume_tag'} ++ def __init__(self, filesystem_tag=None, info=None, volume_tag=None, **unknown_fields): ++ ''' ++ filesystem_tag : str ++ info : FilesystemInfo ++ volume_tag : str ++ ''' ++ self.filesystem_tag = filesystem_tag ++ self.info = FilesystemInfo.from_json(info) if info else None ++ self.volume_tag = volume_tag ++ ++ ++ ++class FilesystemAttachment(Type): ++ _toSchema = {'filesystem_tag': 'filesystem-tag', 'info': 'info', 'machine_tag': 'machine-tag'} ++ _toPy = {'filesystem-tag': 'filesystem_tag', 'info': 'info', 'machine-tag': 'machine_tag'} ++ def __init__(self, filesystem_tag=None, info=None, machine_tag=None, **unknown_fields): ++ ''' ++ filesystem_tag : str ++ info : FilesystemAttachmentInfo ++ machine_tag : str ++ ''' ++ self.filesystem_tag = filesystem_tag ++ self.info = FilesystemAttachmentInfo.from_json(info) if info else None ++ self.machine_tag = machine_tag ++ ++ ++ ++class FilesystemAttachmentDetails(Type): ++ _toSchema = {'filesystemattachmentinfo': 'FilesystemAttachmentInfo', 'life': 'life'} ++ _toPy = {'FilesystemAttachmentInfo': 'filesystemattachmentinfo', 'life': 'life'} ++ def __init__(self, filesystemattachmentinfo=None, life=None, **unknown_fields): ++ ''' ++ filesystemattachmentinfo : FilesystemAttachmentInfo ++ life : str ++ ''' ++ self.filesystemattachmentinfo = FilesystemAttachmentInfo.from_json(filesystemattachmentinfo) if filesystemattachmentinfo else None ++ self.life = life ++ ++ ++ ++class FilesystemAttachmentInfo(Type): ++ _toSchema = {'mount_point': 'mount-point', 'read_only': 'read-only'} ++ _toPy = {'mount-point': 'mount_point', 'read-only': 'read_only'} ++ def __init__(self, mount_point=None, read_only=None, **unknown_fields): ++ ''' ++ mount_point : str ++ read_only : bool ++ ''' ++ self.mount_point = mount_point ++ self.read_only = read_only ++ ++ ++ ++class FilesystemAttachmentParams(Type): ++ _toSchema = {'filesystem_id': 'filesystem-id', 'filesystem_tag': 'filesystem-tag', 'instance_id': 'instance-id', 'machine_tag': 'machine-tag', 'mount_point': 'mount-point', 'provider': 'provider', 'read_only': 'read-only'} ++ _toPy = {'filesystem-id': 'filesystem_id', 'filesystem-tag': 'filesystem_tag', 'instance-id': 'instance_id', 'machine-tag': 'machine_tag', 'mount-point': 'mount_point', 'provider': 'provider', 'read-only': 'read_only'} ++ def __init__(self, filesystem_id=None, filesystem_tag=None, instance_id=None, machine_tag=None, mount_point=None, provider=None, read_only=None, **unknown_fields): ++ ''' ++ filesystem_id : str ++ filesystem_tag : str ++ instance_id : str ++ machine_tag : str ++ mount_point : str ++ provider : str ++ read_only : bool ++ ''' ++ self.filesystem_id = filesystem_id ++ self.filesystem_tag = filesystem_tag ++ self.instance_id = instance_id ++ self.machine_tag = machine_tag ++ self.mount_point = mount_point ++ self.provider = provider ++ self.read_only = read_only ++ ++ ++ ++class FilesystemAttachmentParamsResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : FilesystemAttachmentParams ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = FilesystemAttachmentParams.from_json(result) if result else None ++ ++ ++ ++class FilesystemAttachmentParamsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~FilesystemAttachmentParamsResult]<~FilesystemAttachmentParamsResult> ++ ''' ++ self.results = [FilesystemAttachmentParamsResult.from_json(o) for o in results or []] ++ ++ ++ ++class FilesystemAttachmentResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : FilesystemAttachment ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = FilesystemAttachment.from_json(result) if result else None ++ ++ ++ ++class FilesystemAttachmentResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~FilesystemAttachmentResult]<~FilesystemAttachmentResult> ++ ''' ++ self.results = [FilesystemAttachmentResult.from_json(o) for o in results or []] ++ ++ ++ ++class FilesystemAttachments(Type): ++ _toSchema = {'filesystem_attachments': 'filesystem-attachments'} ++ _toPy = {'filesystem-attachments': 'filesystem_attachments'} ++ def __init__(self, filesystem_attachments=None, **unknown_fields): ++ ''' ++ filesystem_attachments : typing.Sequence<+T_co>[~FilesystemAttachment]<~FilesystemAttachment> ++ ''' ++ self.filesystem_attachments = [FilesystemAttachment.from_json(o) for o in filesystem_attachments or []] ++ ++ ++ ++class FilesystemDetails(Type): ++ _toSchema = {'filesystem_tag': 'filesystem-tag', 'info': 'info', 'machine_attachments': 'machine-attachments', 'status': 'status', 'storage': 'storage', 'volume_tag': 'volume-tag'} ++ _toPy = {'filesystem-tag': 'filesystem_tag', 'info': 'info', 'machine-attachments': 'machine_attachments', 'status': 'status', 'storage': 'storage', 'volume-tag': 'volume_tag'} ++ def __init__(self, filesystem_tag=None, info=None, machine_attachments=None, status=None, storage=None, volume_tag=None, **unknown_fields): ++ ''' ++ filesystem_tag : str ++ info : FilesystemInfo ++ machine_attachments : typing.Mapping<~KT, +VT_co>[str, ~FilesystemAttachmentInfo]<~FilesystemAttachmentInfo> ++ status : EntityStatus ++ storage : StorageDetails ++ volume_tag : str ++ ''' ++ self.filesystem_tag = filesystem_tag ++ self.info = FilesystemInfo.from_json(info) if info else None ++ self.machine_attachments = machine_attachments ++ self.status = EntityStatus.from_json(status) if status else None ++ self.storage = StorageDetails.from_json(storage) if storage else None ++ self.volume_tag = volume_tag ++ ++ ++ ++class FilesystemDetailsListResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : typing.Sequence<+T_co>[~FilesystemDetails]<~FilesystemDetails> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = [FilesystemDetails.from_json(o) for o in result or []] ++ ++ ++ ++class FilesystemDetailsListResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~FilesystemDetailsListResult]<~FilesystemDetailsListResult> ++ ''' ++ self.results = [FilesystemDetailsListResult.from_json(o) for o in results or []] ++ ++ ++ ++class FilesystemFilter(Type): ++ _toSchema = {'machines': 'machines'} ++ _toPy = {'machines': 'machines'} ++ def __init__(self, machines=None, **unknown_fields): ++ ''' ++ machines : typing.Sequence<+T_co>[str] ++ ''' ++ self.machines = machines ++ ++ ++ ++class FilesystemFilters(Type): ++ _toSchema = {'filters': 'filters'} ++ _toPy = {'filters': 'filters'} ++ def __init__(self, filters=None, **unknown_fields): ++ ''' ++ filters : typing.Sequence<+T_co>[~FilesystemFilter]<~FilesystemFilter> ++ ''' ++ self.filters = [FilesystemFilter.from_json(o) for o in filters or []] ++ ++ ++ ++class FilesystemInfo(Type): ++ _toSchema = {'filesystem_id': 'filesystem-id', 'size': 'size'} ++ _toPy = {'filesystem-id': 'filesystem_id', 'size': 'size'} ++ def __init__(self, filesystem_id=None, size=None, **unknown_fields): ++ ''' ++ filesystem_id : str ++ size : int ++ ''' ++ self.filesystem_id = filesystem_id ++ self.size = size ++ ++ ++ ++class FilesystemParams(Type): ++ _toSchema = {'attachment': 'attachment', 'attributes': 'attributes', 'filesystem_tag': 'filesystem-tag', 'provider': 'provider', 'size': 'size', 'tags': 'tags', 'volume_tag': 'volume-tag'} ++ _toPy = {'attachment': 'attachment', 'attributes': 'attributes', 'filesystem-tag': 'filesystem_tag', 'provider': 'provider', 'size': 'size', 'tags': 'tags', 'volume-tag': 'volume_tag'} ++ def __init__(self, attachment=None, attributes=None, filesystem_tag=None, provider=None, size=None, tags=None, volume_tag=None, **unknown_fields): ++ ''' ++ attachment : FilesystemAttachmentParams ++ attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ filesystem_tag : str ++ provider : str ++ size : int ++ tags : typing.Mapping<~KT, +VT_co>[str, str] ++ volume_tag : str ++ ''' ++ self.attachment = FilesystemAttachmentParams.from_json(attachment) if attachment else None ++ self.attributes = attributes ++ self.filesystem_tag = filesystem_tag ++ self.provider = provider ++ self.size = size ++ self.tags = tags ++ self.volume_tag = volume_tag ++ ++ ++ ++class FilesystemParamsResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : FilesystemParams ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = FilesystemParams.from_json(result) if result else None ++ ++ ++ ++class FilesystemParamsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~FilesystemParamsResult]<~FilesystemParamsResult> ++ ''' ++ self.results = [FilesystemParamsResult.from_json(o) for o in results or []] ++ ++ ++ ++class FilesystemResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : Filesystem ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = Filesystem.from_json(result) if result else None ++ ++ ++ ++class FilesystemResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~FilesystemResult]<~FilesystemResult> ++ ''' ++ self.results = [FilesystemResult.from_json(o) for o in results or []] ++ ++ ++ ++class Filesystems(Type): ++ _toSchema = {'filesystems': 'filesystems'} ++ _toPy = {'filesystems': 'filesystems'} ++ def __init__(self, filesystems=None, **unknown_fields): ++ ''' ++ filesystems : typing.Sequence<+T_co>[~Filesystem]<~Filesystem> ++ ''' ++ self.filesystems = [Filesystem.from_json(o) for o in filesystems or []] ++ ++ ++ ++class FindActionsByNames(Type): ++ _toSchema = {'names': 'names'} ++ _toPy = {'names': 'names'} ++ def __init__(self, names=None, **unknown_fields): ++ ''' ++ names : typing.Sequence<+T_co>[str] ++ ''' ++ self.names = names ++ ++ ++ ++class FindTags(Type): ++ _toSchema = {'prefixes': 'prefixes'} ++ _toPy = {'prefixes': 'prefixes'} ++ def __init__(self, prefixes=None, **unknown_fields): ++ ''' ++ prefixes : typing.Sequence<+T_co>[str] ++ ''' ++ self.prefixes = prefixes ++ ++ ++ ++class FindTagsResults(Type): ++ _toSchema = {'matches': 'matches'} ++ _toPy = {'matches': 'matches'} ++ def __init__(self, matches=None, **unknown_fields): ++ ''' ++ matches : typing.Sequence<+T_co>[~Entity]<~Entity> ++ ''' ++ self.matches = [Entity.from_json(o) for o in matches or []] ++ ++ ++ ++class FindToolsParams(Type): ++ _toSchema = {'arch': 'arch', 'major': 'major', 'minor': 'minor', 'number': 'number', 'series': 'series'} ++ _toPy = {'arch': 'arch', 'major': 'major', 'minor': 'minor', 'number': 'number', 'series': 'series'} ++ def __init__(self, arch=None, major=None, minor=None, number=None, series=None, **unknown_fields): ++ ''' ++ arch : str ++ major : int ++ minor : int ++ number : Number ++ series : str ++ ''' ++ self.arch = arch ++ self.major = major ++ self.minor = minor ++ self.number = Number.from_json(number) if number else None ++ self.series = series ++ ++ ++ ++class FindToolsResult(Type): ++ _toSchema = {'error': 'error', 'list_': 'list'} ++ _toPy = {'error': 'error', 'list': 'list_'} ++ def __init__(self, error=None, list_=None, **unknown_fields): ++ ''' ++ error : Error ++ list_ : typing.Sequence<+T_co>[~Tools]<~Tools> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.list_ = [Tools.from_json(o) for o in list_ or []] ++ ++ ++ ++class FullStatus(Type): ++ _toSchema = {'applications': 'applications', 'machines': 'machines', 'model': 'model', 'relations': 'relations', 'remote_applications': 'remote-applications'} ++ _toPy = {'applications': 'applications', 'machines': 'machines', 'model': 'model', 'relations': 'relations', 'remote-applications': 'remote_applications'} ++ def __init__(self, applications=None, machines=None, model=None, relations=None, remote_applications=None, **unknown_fields): ++ ''' ++ applications : typing.Mapping<~KT, +VT_co>[str, ~ApplicationStatus]<~ApplicationStatus> ++ machines : typing.Mapping<~KT, +VT_co>[str, ~MachineStatus]<~MachineStatus> ++ model : ModelStatusInfo ++ relations : typing.Sequence<+T_co>[~RelationStatus]<~RelationStatus> ++ remote_applications : typing.Mapping<~KT, +VT_co>[str, ~RemoteApplicationStatus]<~RemoteApplicationStatus> ++ ''' ++ self.applications = applications ++ self.machines = machines ++ self.model = ModelStatusInfo.from_json(model) if model else None ++ self.relations = [RelationStatus.from_json(o) for o in relations or []] ++ self.remote_applications = remote_applications ++ ++ ++ ++class GetApplicationConstraints(Type): ++ _toSchema = {'application': 'application'} ++ _toPy = {'application': 'application'} ++ def __init__(self, application=None, **unknown_fields): ++ ''' ++ application : str ++ ''' ++ self.application = application ++ ++ ++ ++class GetConstraintsResults(Type): ++ _toSchema = {'constraints': 'constraints'} ++ _toPy = {'constraints': 'constraints'} ++ def __init__(self, constraints=None, **unknown_fields): ++ ''' ++ constraints : Value ++ ''' ++ self.constraints = Value.from_json(constraints) if constraints else None ++ ++ ++ ++class GetLeadershipSettingsBulkResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~GetLeadershipSettingsResult]<~GetLeadershipSettingsResult> ++ ''' ++ self.results = [GetLeadershipSettingsResult.from_json(o) for o in results or []] ++ ++ ++ ++class GetLeadershipSettingsResult(Type): ++ _toSchema = {'error': 'error', 'settings': 'settings'} ++ _toPy = {'error': 'error', 'settings': 'settings'} ++ def __init__(self, error=None, settings=None, **unknown_fields): ++ ''' ++ error : Error ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.settings = settings ++ ++ ++ ++class HAMember(Type): ++ _toSchema = {'public_address': 'public-address', 'series': 'series', 'tag': 'tag'} ++ _toPy = {'public-address': 'public_address', 'series': 'series', 'tag': 'tag'} ++ def __init__(self, public_address=None, series=None, tag=None, **unknown_fields): ++ ''' ++ public_address : Address ++ series : str ++ tag : str ++ ''' ++ self.public_address = Address.from_json(public_address) if public_address else None ++ self.series = series ++ self.tag = tag ++ ++ ++ ++class HardwareCharacteristics(Type): ++ _toSchema = {'arch': 'arch', 'availability_zone': 'availability-zone', 'cpu_cores': 'cpu-cores', 'cpu_power': 'cpu-power', 'mem': 'mem', 'root_disk': 'root-disk', 'tags': 'tags'} ++ _toPy = {'arch': 'arch', 'availability-zone': 'availability_zone', 'cpu-cores': 'cpu_cores', 'cpu-power': 'cpu_power', 'mem': 'mem', 'root-disk': 'root_disk', 'tags': 'tags'} ++ def __init__(self, arch=None, availability_zone=None, cpu_cores=None, cpu_power=None, mem=None, root_disk=None, tags=None, **unknown_fields): ++ ''' ++ arch : str ++ availability_zone : str ++ cpu_cores : int ++ cpu_power : int ++ mem : int ++ root_disk : int ++ tags : typing.Sequence<+T_co>[str] ++ ''' ++ self.arch = arch ++ self.availability_zone = availability_zone ++ self.cpu_cores = cpu_cores ++ self.cpu_power = cpu_power ++ self.mem = mem ++ self.root_disk = root_disk ++ self.tags = tags ++ ++ ++ ++class History(Type): ++ _toSchema = {'error': 'error', 'statuses': 'statuses'} ++ _toPy = {'error': 'error', 'statuses': 'statuses'} ++ def __init__(self, error=None, statuses=None, **unknown_fields): ++ ''' ++ error : Error ++ statuses : typing.Sequence<+T_co>[~DetailedStatus]<~DetailedStatus> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.statuses = [DetailedStatus.from_json(o) for o in statuses or []] ++ ++ ++ ++class HostNetworkChange(Type): ++ _toSchema = {'error': 'error', 'new_bridges': 'new-bridges', 'reconfigure_delay': 'reconfigure-delay'} ++ _toPy = {'error': 'error', 'new-bridges': 'new_bridges', 'reconfigure-delay': 'reconfigure_delay'} ++ def __init__(self, error=None, new_bridges=None, reconfigure_delay=None, **unknown_fields): ++ ''' ++ error : Error ++ new_bridges : typing.Sequence<+T_co>[~DeviceBridgeInfo]<~DeviceBridgeInfo> ++ reconfigure_delay : int ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.new_bridges = [DeviceBridgeInfo.from_json(o) for o in new_bridges or []] ++ self.reconfigure_delay = reconfigure_delay ++ ++ ++ ++class HostNetworkChangeResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~HostNetworkChange]<~HostNetworkChange> ++ ''' ++ self.results = [HostNetworkChange.from_json(o) for o in results or []] ++ ++ ++ ++class HostPort(Type): ++ _toSchema = {'address': 'Address', 'port': 'port'} ++ _toPy = {'Address': 'address', 'port': 'port'} ++ def __init__(self, address=None, port=None, **unknown_fields): ++ ''' ++ address : Address ++ port : int ++ ''' ++ self.address = Address.from_json(address) if address else None ++ self.port = port ++ ++ ++ ++class HostedModelConfig(Type): ++ _toSchema = {'cloud_spec': 'cloud-spec', 'config': 'config', 'error': 'error', 'name': 'name', 'owner': 'owner'} ++ _toPy = {'cloud-spec': 'cloud_spec', 'config': 'config', 'error': 'error', 'name': 'name', 'owner': 'owner'} ++ def __init__(self, cloud_spec=None, config=None, error=None, name=None, owner=None, **unknown_fields): ++ ''' ++ cloud_spec : CloudSpec ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ error : Error ++ name : str ++ owner : str ++ ''' ++ self.cloud_spec = CloudSpec.from_json(cloud_spec) if cloud_spec else None ++ self.config = config ++ self.error = Error.from_json(error) if error else None ++ self.name = name ++ self.owner = owner ++ ++ ++ ++class HostedModelConfigsResults(Type): ++ _toSchema = {'models': 'models'} ++ _toPy = {'models': 'models'} ++ def __init__(self, models=None, **unknown_fields): ++ ''' ++ models : typing.Sequence<+T_co>[~HostedModelConfig]<~HostedModelConfig> ++ ''' ++ self.models = [HostedModelConfig.from_json(o) for o in models or []] ++ ++ ++ ++class ImageFilterParams(Type): ++ _toSchema = {'images': 'images'} ++ _toPy = {'images': 'images'} ++ def __init__(self, images=None, **unknown_fields): ++ ''' ++ images : typing.Sequence<+T_co>[~ImageSpec]<~ImageSpec> ++ ''' ++ self.images = [ImageSpec.from_json(o) for o in images or []] ++ ++ ++ ++class ImageMetadata(Type): ++ _toSchema = {'arch': 'arch', 'created': 'created', 'kind': 'kind', 'series': 'series', 'url': 'url'} ++ _toPy = {'arch': 'arch', 'created': 'created', 'kind': 'kind', 'series': 'series', 'url': 'url'} ++ def __init__(self, arch=None, created=None, kind=None, series=None, url=None, **unknown_fields): ++ ''' ++ arch : str ++ created : str ++ kind : str ++ series : str ++ url : str ++ ''' ++ self.arch = arch ++ self.created = created ++ self.kind = kind ++ self.series = series ++ self.url = url ++ ++ ++ ++class ImageMetadataFilter(Type): ++ _toSchema = {'arches': 'arches', 'region': 'region', 'root_storage_type': 'root-storage-type', 'series': 'series', 'stream': 'stream', 'virt_type': 'virt-type'} ++ _toPy = {'arches': 'arches', 'region': 'region', 'root-storage-type': 'root_storage_type', 'series': 'series', 'stream': 'stream', 'virt-type': 'virt_type'} ++ def __init__(self, arches=None, region=None, root_storage_type=None, series=None, stream=None, virt_type=None, **unknown_fields): ++ ''' ++ arches : typing.Sequence<+T_co>[str] ++ region : str ++ root_storage_type : str ++ series : typing.Sequence<+T_co>[str] ++ stream : str ++ virt_type : str ++ ''' ++ self.arches = arches ++ self.region = region ++ self.root_storage_type = root_storage_type ++ self.series = series ++ self.stream = stream ++ self.virt_type = virt_type ++ ++ ++ ++class ImageSpec(Type): ++ _toSchema = {'arch': 'arch', 'kind': 'kind', 'series': 'series'} ++ _toPy = {'arch': 'arch', 'kind': 'kind', 'series': 'series'} ++ def __init__(self, arch=None, kind=None, series=None, **unknown_fields): ++ ''' ++ arch : str ++ kind : str ++ series : str ++ ''' ++ self.arch = arch ++ self.kind = kind ++ self.series = series ++ ++ ++ ++class InitiateMigrationArgs(Type): ++ _toSchema = {'specs': 'specs'} ++ _toPy = {'specs': 'specs'} ++ def __init__(self, specs=None, **unknown_fields): ++ ''' ++ specs : typing.Sequence<+T_co>[~MigrationSpec]<~MigrationSpec> ++ ''' ++ self.specs = [MigrationSpec.from_json(o) for o in specs or []] ++ ++ ++ ++class InitiateMigrationResult(Type): ++ _toSchema = {'error': 'error', 'migration_id': 'migration-id', 'model_tag': 'model-tag'} ++ _toPy = {'error': 'error', 'migration-id': 'migration_id', 'model-tag': 'model_tag'} ++ def __init__(self, error=None, migration_id=None, model_tag=None, **unknown_fields): ++ ''' ++ error : Error ++ migration_id : str ++ model_tag : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.migration_id = migration_id ++ self.model_tag = model_tag ++ ++ ++ ++class InitiateMigrationResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~InitiateMigrationResult]<~InitiateMigrationResult> ++ ''' ++ self.results = [InitiateMigrationResult.from_json(o) for o in results or []] ++ ++ ++ ++class InstanceInfo(Type): ++ _toSchema = {'characteristics': 'characteristics', 'instance_id': 'instance-id', 'network_config': 'network-config', 'nonce': 'nonce', 'tag': 'tag', 'volume_attachments': 'volume-attachments', 'volumes': 'volumes'} ++ _toPy = {'characteristics': 'characteristics', 'instance-id': 'instance_id', 'network-config': 'network_config', 'nonce': 'nonce', 'tag': 'tag', 'volume-attachments': 'volume_attachments', 'volumes': 'volumes'} ++ def __init__(self, characteristics=None, instance_id=None, network_config=None, nonce=None, tag=None, volume_attachments=None, volumes=None, **unknown_fields): ++ ''' ++ characteristics : HardwareCharacteristics ++ instance_id : str ++ network_config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig> ++ nonce : str ++ tag : str ++ volume_attachments : typing.Mapping<~KT, +VT_co>[str, ~VolumeAttachmentInfo]<~VolumeAttachmentInfo> ++ volumes : typing.Sequence<+T_co>[~Volume]<~Volume> ++ ''' ++ self.characteristics = HardwareCharacteristics.from_json(characteristics) if characteristics else None ++ self.instance_id = instance_id ++ self.network_config = [NetworkConfig.from_json(o) for o in network_config or []] ++ self.nonce = nonce ++ self.tag = tag ++ self.volume_attachments = volume_attachments ++ self.volumes = [Volume.from_json(o) for o in volumes or []] ++ ++ ++ ++class InstanceType(Type): ++ _toSchema = {'arches': 'arches', 'cost': 'cost', 'cpu_cores': 'cpu-cores', 'deprecated': 'deprecated', 'memory': 'memory', 'name': 'name', 'root_disk': 'root-disk', 'virt_type': 'virt-type'} ++ _toPy = {'arches': 'arches', 'cost': 'cost', 'cpu-cores': 'cpu_cores', 'deprecated': 'deprecated', 'memory': 'memory', 'name': 'name', 'root-disk': 'root_disk', 'virt-type': 'virt_type'} ++ def __init__(self, arches=None, cost=None, cpu_cores=None, deprecated=None, memory=None, name=None, root_disk=None, virt_type=None, **unknown_fields): ++ ''' ++ arches : typing.Sequence<+T_co>[str] ++ cost : int ++ cpu_cores : int ++ deprecated : bool ++ memory : int ++ name : str ++ root_disk : int ++ virt_type : str ++ ''' ++ self.arches = arches ++ self.cost = cost ++ self.cpu_cores = cpu_cores ++ self.deprecated = deprecated ++ self.memory = memory ++ self.name = name ++ self.root_disk = root_disk ++ self.virt_type = virt_type ++ ++ ++ ++class InstanceTypesResult(Type): ++ _toSchema = {'cost_currency': 'cost-currency', 'cost_divisor': 'cost-divisor', 'cost_unit': 'cost-unit', 'error': 'error', 'instance_types': 'instance-types'} ++ _toPy = {'cost-currency': 'cost_currency', 'cost-divisor': 'cost_divisor', 'cost-unit': 'cost_unit', 'error': 'error', 'instance-types': 'instance_types'} ++ def __init__(self, cost_currency=None, cost_divisor=None, cost_unit=None, error=None, instance_types=None, **unknown_fields): ++ ''' ++ cost_currency : str ++ cost_divisor : int ++ cost_unit : str ++ error : Error ++ instance_types : typing.Sequence<+T_co>[~InstanceType]<~InstanceType> ++ ''' ++ self.cost_currency = cost_currency ++ self.cost_divisor = cost_divisor ++ self.cost_unit = cost_unit ++ self.error = Error.from_json(error) if error else None ++ self.instance_types = [InstanceType.from_json(o) for o in instance_types or []] ++ ++ ++ ++class InstanceTypesResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~InstanceTypesResult]<~InstanceTypesResult> ++ ''' ++ self.results = [InstanceTypesResult.from_json(o) for o in results or []] ++ ++ ++ ++class InstancesInfo(Type): ++ _toSchema = {'machines': 'machines'} ++ _toPy = {'machines': 'machines'} ++ def __init__(self, machines=None, **unknown_fields): ++ ''' ++ machines : typing.Sequence<+T_co>[~InstanceInfo]<~InstanceInfo> ++ ''' ++ self.machines = [InstanceInfo.from_json(o) for o in machines or []] ++ ++ ++ ++class IntResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : int ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = result ++ ++ ++ ++class IntResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~IntResult]<~IntResult> ++ ''' ++ self.results = [IntResult.from_json(o) for o in results or []] ++ ++ ++ ++class InterfaceAddress(Type): ++ _toSchema = {'cidr': 'cidr', 'value': 'value'} ++ _toPy = {'cidr': 'cidr', 'value': 'value'} ++ def __init__(self, cidr=None, value=None, **unknown_fields): ++ ''' ++ cidr : str ++ value : str ++ ''' ++ self.cidr = cidr ++ self.value = value ++ ++ ++ ++class IsMasterResult(Type): ++ _toSchema = {'master': 'master'} ++ _toPy = {'master': 'master'} ++ def __init__(self, master=None, **unknown_fields): ++ ''' ++ master : bool ++ ''' ++ self.master = master ++ ++ ++ ++class IsMeteredResult(Type): ++ _toSchema = {'metered': 'metered'} ++ _toPy = {'metered': 'metered'} ++ def __init__(self, metered=None, **unknown_fields): ++ ''' ++ metered : bool ++ ''' ++ self.metered = metered ++ ++ ++ ++class JobsResult(Type): ++ _toSchema = {'error': 'error', 'jobs': 'jobs'} ++ _toPy = {'error': 'error', 'jobs': 'jobs'} ++ def __init__(self, error=None, jobs=None, **unknown_fields): ++ ''' ++ error : Error ++ jobs : typing.Sequence<+T_co>[str] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.jobs = jobs ++ ++ ++ ++class JobsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~JobsResult]<~JobsResult> ++ ''' ++ self.results = [JobsResult.from_json(o) for o in results or []] ++ ++ ++ ++class LifeResult(Type): ++ _toSchema = {'error': 'error', 'life': 'life'} ++ _toPy = {'error': 'error', 'life': 'life'} ++ def __init__(self, error=None, life=None, **unknown_fields): ++ ''' ++ error : Error ++ life : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.life = life ++ ++ ++ ++class LifeResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~LifeResult]<~LifeResult> ++ ''' ++ self.results = [LifeResult.from_json(o) for o in results or []] ++ ++ ++ ++class ListCloudImageMetadataResult(Type): ++ _toSchema = {'result': 'result'} ++ _toPy = {'result': 'result'} ++ def __init__(self, result=None, **unknown_fields): ++ ''' ++ result : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata> ++ ''' ++ self.result = [CloudImageMetadata.from_json(o) for o in result or []] ++ ++ ++ ++class ListImageResult(Type): ++ _toSchema = {'result': 'result'} ++ _toPy = {'result': 'result'} ++ def __init__(self, result=None, **unknown_fields): ++ ''' ++ result : typing.Sequence<+T_co>[~ImageMetadata]<~ImageMetadata> ++ ''' ++ self.result = [ImageMetadata.from_json(o) for o in result or []] ++ ++ ++ ++class ListResourcesArgs(Type): ++ _toSchema = {'entities': 'entities'} ++ _toPy = {'entities': 'entities'} ++ def __init__(self, entities=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ ''' ++ self.entities = [Entity.from_json(o) for o in entities or []] ++ ++ ++ ++class ListSSHKeys(Type): ++ _toSchema = {'entities': 'entities', 'mode': 'mode'} ++ _toPy = {'entities': 'entities', 'mode': 'mode'} ++ def __init__(self, entities=None, mode=None, **unknown_fields): ++ ''' ++ entities : Entities ++ mode : bool ++ ''' ++ self.entities = Entities.from_json(entities) if entities else None ++ self.mode = mode ++ ++ ++ ++class ListSpacesResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~Space]<~Space> ++ ''' ++ self.results = [Space.from_json(o) for o in results or []] ++ ++ ++ ++class ListSubnetsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~Subnet]<~Subnet> ++ ''' ++ self.results = [Subnet.from_json(o) for o in results or []] ++ ++ ++ ++class ListUnitResourcesArgs(Type): ++ _toSchema = {'resource_names': 'resource-names'} ++ _toPy = {'resource-names': 'resource_names'} ++ def __init__(self, resource_names=None, **unknown_fields): ++ ''' ++ resource_names : typing.Sequence<+T_co>[str] ++ ''' ++ self.resource_names = resource_names ++ ++ ++ ++class LogForwardingGetLastSentParams(Type): ++ _toSchema = {'ids': 'ids'} ++ _toPy = {'ids': 'ids'} ++ def __init__(self, ids=None, **unknown_fields): ++ ''' ++ ids : typing.Sequence<+T_co>[~LogForwardingID]<~LogForwardingID> ++ ''' ++ self.ids = [LogForwardingID.from_json(o) for o in ids or []] ++ ++ ++ ++class LogForwardingGetLastSentResult(Type): ++ _toSchema = {'err': 'err', 'record_id': 'record-id', 'record_timestamp': 'record-timestamp'} ++ _toPy = {'err': 'err', 'record-id': 'record_id', 'record-timestamp': 'record_timestamp'} ++ def __init__(self, err=None, record_id=None, record_timestamp=None, **unknown_fields): ++ ''' ++ err : Error ++ record_id : int ++ record_timestamp : int ++ ''' ++ self.err = Error.from_json(err) if err else None ++ self.record_id = record_id ++ self.record_timestamp = record_timestamp ++ ++ ++ ++class LogForwardingGetLastSentResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~LogForwardingGetLastSentResult]<~LogForwardingGetLastSentResult> ++ ''' ++ self.results = [LogForwardingGetLastSentResult.from_json(o) for o in results or []] ++ ++ ++ ++class LogForwardingID(Type): ++ _toSchema = {'model': 'model', 'sink': 'sink'} ++ _toPy = {'model': 'model', 'sink': 'sink'} ++ def __init__(self, model=None, sink=None, **unknown_fields): ++ ''' ++ model : str ++ sink : str ++ ''' ++ self.model = model ++ self.sink = sink ++ ++ ++ ++class LogForwardingSetLastSentParam(Type): ++ _toSchema = {'logforwardingid': 'LogForwardingID', 'record_id': 'record-id', 'record_timestamp': 'record-timestamp'} ++ _toPy = {'LogForwardingID': 'logforwardingid', 'record-id': 'record_id', 'record-timestamp': 'record_timestamp'} ++ def __init__(self, logforwardingid=None, record_id=None, record_timestamp=None, **unknown_fields): ++ ''' ++ logforwardingid : LogForwardingID ++ record_id : int ++ record_timestamp : int ++ ''' ++ self.logforwardingid = LogForwardingID.from_json(logforwardingid) if logforwardingid else None ++ self.record_id = record_id ++ self.record_timestamp = record_timestamp ++ ++ ++ ++class LogForwardingSetLastSentParams(Type): ++ _toSchema = {'params': 'params'} ++ _toPy = {'params': 'params'} ++ def __init__(self, params=None, **unknown_fields): ++ ''' ++ params : typing.Sequence<+T_co>[~LogForwardingSetLastSentParam]<~LogForwardingSetLastSentParam> ++ ''' ++ self.params = [LogForwardingSetLastSentParam.from_json(o) for o in params or []] ++ ++ ++ ++class LookUpArg(Type): ++ _toSchema = {'id_': 'id', 'name': 'name'} ++ _toPy = {'id': 'id_', 'name': 'name'} ++ def __init__(self, id_=None, name=None, **unknown_fields): ++ ''' ++ id_ : str ++ name : str ++ ''' ++ self.id_ = id_ ++ self.name = name ++ ++ ++ ++class LookUpArgs(Type): ++ _toSchema = {'args': 'args'} ++ _toPy = {'args': 'args'} ++ def __init__(self, args=None, **unknown_fields): ++ ''' ++ args : typing.Sequence<+T_co>[~LookUpArg]<~LookUpArg> ++ ''' ++ self.args = [LookUpArg.from_json(o) for o in args or []] ++ ++ ++ ++class LookUpPayloadArg(Type): ++ _toSchema = {'id_': 'id', 'name': 'name'} ++ _toPy = {'id': 'id_', 'name': 'name'} ++ def __init__(self, id_=None, name=None, **unknown_fields): ++ ''' ++ id_ : str ++ name : str ++ ''' ++ self.id_ = id_ ++ self.name = name ++ ++ ++ ++class LookUpPayloadArgs(Type): ++ _toSchema = {'args': 'args'} ++ _toPy = {'args': 'args'} ++ def __init__(self, args=None, **unknown_fields): ++ ''' ++ args : typing.Sequence<+T_co>[~LookUpPayloadArg]<~LookUpPayloadArg> ++ ''' ++ self.args = [LookUpPayloadArg.from_json(o) for o in args or []] ++ ++ ++ ++class Macaroon(Type): ++ _toSchema = {} ++ _toPy = {} ++ def __init__(self, **unknown_fields): ++ ''' ++ ++ ''' ++ pass ++ ++ ++ ++class MachineAddresses(Type): ++ _toSchema = {'addresses': 'addresses', 'tag': 'tag'} ++ _toPy = {'addresses': 'addresses', 'tag': 'tag'} ++ def __init__(self, addresses=None, tag=None, **unknown_fields): ++ ''' ++ addresses : typing.Sequence<+T_co>[~Address]<~Address> ++ tag : str ++ ''' ++ self.addresses = [Address.from_json(o) for o in addresses or []] ++ self.tag = tag ++ ++ ++ ++class MachineAddressesResult(Type): ++ _toSchema = {'addresses': 'addresses', 'error': 'error'} ++ _toPy = {'addresses': 'addresses', 'error': 'error'} ++ def __init__(self, addresses=None, error=None, **unknown_fields): ++ ''' ++ addresses : typing.Sequence<+T_co>[~Address]<~Address> ++ error : Error ++ ''' ++ self.addresses = [Address.from_json(o) for o in addresses or []] ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class MachineAddressesResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~MachineAddressesResult]<~MachineAddressesResult> ++ ''' ++ self.results = [MachineAddressesResult.from_json(o) for o in results or []] ++ ++ ++ ++class MachineBlockDevices(Type): ++ _toSchema = {'block_devices': 'block-devices', 'machine': 'machine'} ++ _toPy = {'block-devices': 'block_devices', 'machine': 'machine'} ++ def __init__(self, block_devices=None, machine=None, **unknown_fields): ++ ''' ++ block_devices : typing.Sequence<+T_co>[~BlockDevice]<~BlockDevice> ++ machine : str ++ ''' ++ self.block_devices = [BlockDevice.from_json(o) for o in block_devices or []] ++ self.machine = machine ++ ++ ++ ++class MachineContainers(Type): ++ _toSchema = {'container_types': 'container-types', 'machine_tag': 'machine-tag'} ++ _toPy = {'container-types': 'container_types', 'machine-tag': 'machine_tag'} ++ def __init__(self, container_types=None, machine_tag=None, **unknown_fields): ++ ''' ++ container_types : typing.Sequence<+T_co>[str] ++ machine_tag : str ++ ''' ++ self.container_types = container_types ++ self.machine_tag = machine_tag ++ ++ ++ ++class MachineContainersParams(Type): ++ _toSchema = {'params': 'params'} ++ _toPy = {'params': 'params'} ++ def __init__(self, params=None, **unknown_fields): ++ ''' ++ params : typing.Sequence<+T_co>[~MachineContainers]<~MachineContainers> ++ ''' ++ self.params = [MachineContainers.from_json(o) for o in params or []] ++ ++ ++ ++class MachineHardware(Type): ++ _toSchema = {'arch': 'arch', 'availability_zone': 'availability-zone', 'cores': 'cores', 'cpu_power': 'cpu-power', 'mem': 'mem', 'root_disk': 'root-disk', 'tags': 'tags'} ++ _toPy = {'arch': 'arch', 'availability-zone': 'availability_zone', 'cores': 'cores', 'cpu-power': 'cpu_power', 'mem': 'mem', 'root-disk': 'root_disk', 'tags': 'tags'} ++ def __init__(self, arch=None, availability_zone=None, cores=None, cpu_power=None, mem=None, root_disk=None, tags=None, **unknown_fields): ++ ''' ++ arch : str ++ availability_zone : str ++ cores : int ++ cpu_power : int ++ mem : int ++ root_disk : int ++ tags : typing.Sequence<+T_co>[str] ++ ''' ++ self.arch = arch ++ self.availability_zone = availability_zone ++ self.cores = cores ++ self.cpu_power = cpu_power ++ self.mem = mem ++ self.root_disk = root_disk ++ self.tags = tags ++ ++ ++ ++class MachineNetworkConfigResult(Type): ++ _toSchema = {'error': 'error', 'info': 'info'} ++ _toPy = {'error': 'error', 'info': 'info'} ++ def __init__(self, error=None, info=None, **unknown_fields): ++ ''' ++ error : Error ++ info : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.info = [NetworkConfig.from_json(o) for o in info or []] ++ ++ ++ ++class MachineNetworkConfigResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~MachineNetworkConfigResult]<~MachineNetworkConfigResult> ++ ''' ++ self.results = [MachineNetworkConfigResult.from_json(o) for o in results or []] ++ ++ ++ ++class MachinePortRange(Type): ++ _toSchema = {'port_range': 'port-range', 'relation_tag': 'relation-tag', 'unit_tag': 'unit-tag'} ++ _toPy = {'port-range': 'port_range', 'relation-tag': 'relation_tag', 'unit-tag': 'unit_tag'} ++ def __init__(self, port_range=None, relation_tag=None, unit_tag=None, **unknown_fields): ++ ''' ++ port_range : PortRange ++ relation_tag : str ++ unit_tag : str ++ ''' ++ self.port_range = PortRange.from_json(port_range) if port_range else None ++ self.relation_tag = relation_tag ++ self.unit_tag = unit_tag ++ ++ ++ ++class MachinePorts(Type): ++ _toSchema = {'machine_tag': 'machine-tag', 'subnet_tag': 'subnet-tag'} ++ _toPy = {'machine-tag': 'machine_tag', 'subnet-tag': 'subnet_tag'} ++ def __init__(self, machine_tag=None, subnet_tag=None, **unknown_fields): ++ ''' ++ machine_tag : str ++ subnet_tag : str ++ ''' ++ self.machine_tag = machine_tag ++ self.subnet_tag = subnet_tag ++ ++ ++ ++class MachinePortsParams(Type): ++ _toSchema = {'params': 'params'} ++ _toPy = {'params': 'params'} ++ def __init__(self, params=None, **unknown_fields): ++ ''' ++ params : typing.Sequence<+T_co>[~MachinePorts]<~MachinePorts> ++ ''' ++ self.params = [MachinePorts.from_json(o) for o in params or []] ++ ++ ++ ++class MachinePortsResult(Type): ++ _toSchema = {'error': 'error', 'ports': 'ports'} ++ _toPy = {'error': 'error', 'ports': 'ports'} ++ def __init__(self, error=None, ports=None, **unknown_fields): ++ ''' ++ error : Error ++ ports : typing.Sequence<+T_co>[~MachinePortRange]<~MachinePortRange> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.ports = [MachinePortRange.from_json(o) for o in ports or []] ++ ++ ++ ++class MachinePortsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~MachinePortsResult]<~MachinePortsResult> ++ ''' ++ self.results = [MachinePortsResult.from_json(o) for o in results or []] ++ ++ ++ ++class MachineStatus(Type): ++ _toSchema = {'agent_status': 'agent-status', 'containers': 'containers', 'dns_name': 'dns-name', 'hardware': 'hardware', 'has_vote': 'has-vote', 'id_': 'id', 'instance_id': 'instance-id', 'instance_status': 'instance-status', 'ip_addresses': 'ip-addresses', 'jobs': 'jobs', 'series': 'series', 'wants_vote': 'wants-vote'} ++ _toPy = {'agent-status': 'agent_status', 'containers': 'containers', 'dns-name': 'dns_name', 'hardware': 'hardware', 'has-vote': 'has_vote', 'id': 'id_', 'instance-id': 'instance_id', 'instance-status': 'instance_status', 'ip-addresses': 'ip_addresses', 'jobs': 'jobs', 'series': 'series', 'wants-vote': 'wants_vote'} ++ def __init__(self, agent_status=None, containers=None, dns_name=None, hardware=None, has_vote=None, id_=None, instance_id=None, instance_status=None, ip_addresses=None, jobs=None, series=None, wants_vote=None, **unknown_fields): ++ ''' ++ agent_status : DetailedStatus ++ containers : typing.Mapping<~KT, +VT_co>[str, ~MachineStatus]<~MachineStatus> ++ dns_name : str ++ hardware : str ++ has_vote : bool ++ id_ : str ++ instance_id : str ++ instance_status : DetailedStatus ++ ip_addresses : typing.Sequence<+T_co>[str] ++ jobs : typing.Sequence<+T_co>[str] ++ series : str ++ wants_vote : bool ++ ''' ++ self.agent_status = DetailedStatus.from_json(agent_status) if agent_status else None ++ self.containers = containers ++ self.dns_name = dns_name ++ self.hardware = hardware ++ self.has_vote = has_vote ++ self.id_ = id_ ++ self.instance_id = instance_id ++ self.instance_status = DetailedStatus.from_json(instance_status) if instance_status else None ++ self.ip_addresses = ip_addresses ++ self.jobs = jobs ++ self.series = series ++ self.wants_vote = wants_vote ++ ++ ++ ++class MachineStorageId(Type): ++ _toSchema = {'attachment_tag': 'attachment-tag', 'machine_tag': 'machine-tag'} ++ _toPy = {'attachment-tag': 'attachment_tag', 'machine-tag': 'machine_tag'} ++ def __init__(self, attachment_tag=None, machine_tag=None, **unknown_fields): ++ ''' ++ attachment_tag : str ++ machine_tag : str ++ ''' ++ self.attachment_tag = attachment_tag ++ self.machine_tag = machine_tag ++ ++ ++ ++class MachineStorageIds(Type): ++ _toSchema = {'ids': 'ids'} ++ _toPy = {'ids': 'ids'} ++ def __init__(self, ids=None, **unknown_fields): ++ ''' ++ ids : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ ''' ++ self.ids = [MachineStorageId.from_json(o) for o in ids or []] ++ ++ ++ ++class MachineStorageIdsWatchResult(Type): ++ _toSchema = {'changes': 'changes', 'error': 'error', 'watcher_id': 'watcher-id'} ++ _toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'} ++ def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields): ++ ''' ++ changes : typing.Sequence<+T_co>[~MachineStorageId]<~MachineStorageId> ++ error : Error ++ watcher_id : str ++ ''' ++ self.changes = [MachineStorageId.from_json(o) for o in changes or []] ++ self.error = Error.from_json(error) if error else None ++ self.watcher_id = watcher_id ++ ++ ++ ++class MachineStorageIdsWatchResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~MachineStorageIdsWatchResult]<~MachineStorageIdsWatchResult> ++ ''' ++ self.results = [MachineStorageIdsWatchResult.from_json(o) for o in results or []] ++ ++ ++ ++class MapResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = result ++ ++ ++ ++class MapResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~MapResult]<~MapResult> ++ ''' ++ self.results = [MapResult.from_json(o) for o in results or []] ++ ++ ++ ++class MasterMigrationStatus(Type): ++ _toSchema = {'migration_id': 'migration-id', 'phase': 'phase', 'phase_changed_time': 'phase-changed-time', 'spec': 'spec'} ++ _toPy = {'migration-id': 'migration_id', 'phase': 'phase', 'phase-changed-time': 'phase_changed_time', 'spec': 'spec'} ++ def __init__(self, migration_id=None, phase=None, phase_changed_time=None, spec=None, **unknown_fields): ++ ''' ++ migration_id : str ++ phase : str ++ phase_changed_time : str ++ spec : MigrationSpec ++ ''' ++ self.migration_id = migration_id ++ self.phase = phase ++ self.phase_changed_time = phase_changed_time ++ self.spec = MigrationSpec.from_json(spec) if spec else None ++ ++ ++ ++class Member(Type): ++ _toSchema = {'address': 'Address', 'arbiter': 'Arbiter', 'buildindexes': 'BuildIndexes', 'hidden': 'Hidden', 'id_': 'Id', 'priority': 'Priority', 'slavedelay': 'SlaveDelay', 'tags': 'Tags', 'votes': 'Votes'} ++ _toPy = {'Address': 'address', 'Arbiter': 'arbiter', 'BuildIndexes': 'buildindexes', 'Hidden': 'hidden', 'Id': 'id_', 'Priority': 'priority', 'SlaveDelay': 'slavedelay', 'Tags': 'tags', 'Votes': 'votes'} ++ def __init__(self, address=None, arbiter=None, buildindexes=None, hidden=None, id_=None, priority=None, slavedelay=None, tags=None, votes=None, **unknown_fields): ++ ''' ++ address : str ++ arbiter : bool ++ buildindexes : bool ++ hidden : bool ++ id_ : int ++ priority : float ++ slavedelay : int ++ tags : typing.Mapping<~KT, +VT_co>[str, str] ++ votes : int ++ ''' ++ self.address = address ++ self.arbiter = arbiter ++ self.buildindexes = buildindexes ++ self.hidden = hidden ++ self.id_ = id_ ++ self.priority = priority ++ self.slavedelay = slavedelay ++ self.tags = tags ++ self.votes = votes ++ ++ ++ ++class MergeLeadershipSettingsBulkParams(Type): ++ _toSchema = {'params': 'params'} ++ _toPy = {'params': 'params'} ++ def __init__(self, params=None, **unknown_fields): ++ ''' ++ params : typing.Sequence<+T_co>[~MergeLeadershipSettingsParam]<~MergeLeadershipSettingsParam> ++ ''' ++ self.params = [MergeLeadershipSettingsParam.from_json(o) for o in params or []] ++ ++ ++ ++class MergeLeadershipSettingsParam(Type): ++ _toSchema = {'application_tag': 'application-tag', 'settings': 'settings'} ++ _toPy = {'application-tag': 'application_tag', 'settings': 'settings'} ++ def __init__(self, application_tag=None, settings=None, **unknown_fields): ++ ''' ++ application_tag : str ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ ''' ++ self.application_tag = application_tag ++ self.settings = settings ++ ++ ++ ++class MetadataImageIds(Type): ++ _toSchema = {'image_ids': 'image-ids'} ++ _toPy = {'image-ids': 'image_ids'} ++ def __init__(self, image_ids=None, **unknown_fields): ++ ''' ++ image_ids : typing.Sequence<+T_co>[str] ++ ''' ++ self.image_ids = image_ids ++ ++ ++ ++class MetadataSaveParams(Type): ++ _toSchema = {'metadata': 'metadata'} ++ _toPy = {'metadata': 'metadata'} ++ def __init__(self, metadata=None, **unknown_fields): ++ ''' ++ metadata : typing.Sequence<+T_co>[~CloudImageMetadataList]<~CloudImageMetadataList> ++ ''' ++ self.metadata = [CloudImageMetadataList.from_json(o) for o in metadata or []] ++ ++ ++ ++class MeterStatus(Type): ++ _toSchema = {'color': 'color', 'message': 'message'} ++ _toPy = {'color': 'color', 'message': 'message'} ++ def __init__(self, color=None, message=None, **unknown_fields): ++ ''' ++ color : str ++ message : str ++ ''' ++ self.color = color ++ self.message = message ++ ++ ++ ++class MeterStatusParam(Type): ++ _toSchema = {'code': 'code', 'info': 'info', 'tag': 'tag'} ++ _toPy = {'code': 'code', 'info': 'info', 'tag': 'tag'} ++ def __init__(self, code=None, info=None, tag=None, **unknown_fields): ++ ''' ++ code : str ++ info : str ++ tag : str ++ ''' ++ self.code = code ++ self.info = info ++ self.tag = tag ++ ++ ++ ++class MeterStatusParams(Type): ++ _toSchema = {'statues': 'statues'} ++ _toPy = {'statues': 'statues'} ++ def __init__(self, statues=None, **unknown_fields): ++ ''' ++ statues : typing.Sequence<+T_co>[~MeterStatusParam]<~MeterStatusParam> ++ ''' ++ self.statues = [MeterStatusParam.from_json(o) for o in statues or []] ++ ++ ++ ++class MeterStatusResult(Type): ++ _toSchema = {'code': 'code', 'error': 'error', 'info': 'info'} ++ _toPy = {'code': 'code', 'error': 'error', 'info': 'info'} ++ def __init__(self, code=None, error=None, info=None, **unknown_fields): ++ ''' ++ code : str ++ error : Error ++ info : str ++ ''' ++ self.code = code ++ self.error = Error.from_json(error) if error else None ++ self.info = info ++ ++ ++ ++class MeterStatusResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~MeterStatusResult]<~MeterStatusResult> ++ ''' ++ self.results = [MeterStatusResult.from_json(o) for o in results or []] ++ ++ ++ ++class Metric(Type): ++ _toSchema = {'key': 'key', 'time': 'time', 'value': 'value'} ++ _toPy = {'key': 'key', 'time': 'time', 'value': 'value'} ++ def __init__(self, key=None, time=None, value=None, **unknown_fields): ++ ''' ++ key : str ++ time : str ++ value : str ++ ''' ++ self.key = key ++ self.time = time ++ self.value = value ++ ++ ++ ++class MetricBatch(Type): ++ _toSchema = {'charm_url': 'charm-url', 'created': 'created', 'metrics': 'metrics', 'uuid': 'uuid'} ++ _toPy = {'charm-url': 'charm_url', 'created': 'created', 'metrics': 'metrics', 'uuid': 'uuid'} ++ def __init__(self, charm_url=None, created=None, metrics=None, uuid=None, **unknown_fields): ++ ''' ++ charm_url : str ++ created : str ++ metrics : typing.Sequence<+T_co>[~Metric]<~Metric> ++ uuid : str ++ ''' ++ self.charm_url = charm_url ++ self.created = created ++ self.metrics = [Metric.from_json(o) for o in metrics or []] ++ self.uuid = uuid ++ ++ ++ ++class MetricBatchParam(Type): ++ _toSchema = {'batch': 'batch', 'tag': 'tag'} ++ _toPy = {'batch': 'batch', 'tag': 'tag'} ++ def __init__(self, batch=None, tag=None, **unknown_fields): ++ ''' ++ batch : MetricBatch ++ tag : str ++ ''' ++ self.batch = MetricBatch.from_json(batch) if batch else None ++ self.tag = tag ++ ++ ++ ++class MetricBatchParams(Type): ++ _toSchema = {'batches': 'batches'} ++ _toPy = {'batches': 'batches'} ++ def __init__(self, batches=None, **unknown_fields): ++ ''' ++ batches : typing.Sequence<+T_co>[~MetricBatchParam]<~MetricBatchParam> ++ ''' ++ self.batches = [MetricBatchParam.from_json(o) for o in batches or []] ++ ++ ++ ++class MetricResult(Type): ++ _toSchema = {'key': 'key', 'time': 'time', 'unit': 'unit', 'value': 'value'} ++ _toPy = {'key': 'key', 'time': 'time', 'unit': 'unit', 'value': 'value'} ++ def __init__(self, key=None, time=None, unit=None, value=None, **unknown_fields): ++ ''' ++ key : str ++ time : str ++ unit : str ++ value : str ++ ''' ++ self.key = key ++ self.time = time ++ self.unit = unit ++ self.value = value ++ ++ ++ ++class MetricResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~EntityMetrics]<~EntityMetrics> ++ ''' ++ self.results = [EntityMetrics.from_json(o) for o in results or []] ++ ++ ++ ++class MigrationModelInfo(Type): ++ _toSchema = {'agent_version': 'agent-version', 'name': 'name', 'owner_tag': 'owner-tag', 'uuid': 'uuid'} ++ _toPy = {'agent-version': 'agent_version', 'name': 'name', 'owner-tag': 'owner_tag', 'uuid': 'uuid'} ++ def __init__(self, agent_version=None, name=None, owner_tag=None, uuid=None, **unknown_fields): ++ ''' ++ agent_version : Number ++ name : str ++ owner_tag : str ++ uuid : str ++ ''' ++ self.agent_version = Number.from_json(agent_version) if agent_version else None ++ self.name = name ++ self.owner_tag = owner_tag ++ self.uuid = uuid ++ ++ ++ ++class MigrationSpec(Type): ++ _toSchema = {'external_control': 'external-control', 'model_tag': 'model-tag', 'skip_initial_prechecks': 'skip-initial-prechecks', 'target_info': 'target-info'} ++ _toPy = {'external-control': 'external_control', 'model-tag': 'model_tag', 'skip-initial-prechecks': 'skip_initial_prechecks', 'target-info': 'target_info'} ++ def __init__(self, external_control=None, model_tag=None, skip_initial_prechecks=None, target_info=None, **unknown_fields): ++ ''' ++ external_control : bool ++ model_tag : str ++ skip_initial_prechecks : bool ++ target_info : MigrationTargetInfo ++ ''' ++ self.external_control = external_control ++ self.model_tag = model_tag ++ self.skip_initial_prechecks = skip_initial_prechecks ++ self.target_info = MigrationTargetInfo.from_json(target_info) if target_info else None ++ ++ ++ ++class MigrationStatus(Type): ++ _toSchema = {'attempt': 'attempt', 'external_control': 'external-control', 'migration_id': 'migration-id', 'phase': 'phase', 'source_api_addrs': 'source-api-addrs', 'source_ca_cert': 'source-ca-cert', 'target_api_addrs': 'target-api-addrs', 'target_ca_cert': 'target-ca-cert'} ++ _toPy = {'attempt': 'attempt', 'external-control': 'external_control', 'migration-id': 'migration_id', 'phase': 'phase', 'source-api-addrs': 'source_api_addrs', 'source-ca-cert': 'source_ca_cert', 'target-api-addrs': 'target_api_addrs', 'target-ca-cert': 'target_ca_cert'} ++ def __init__(self, attempt=None, external_control=None, migration_id=None, phase=None, source_api_addrs=None, source_ca_cert=None, target_api_addrs=None, target_ca_cert=None, **unknown_fields): ++ ''' ++ attempt : int ++ external_control : bool ++ migration_id : str ++ phase : str ++ source_api_addrs : typing.Sequence<+T_co>[str] ++ source_ca_cert : str ++ target_api_addrs : typing.Sequence<+T_co>[str] ++ target_ca_cert : str ++ ''' ++ self.attempt = attempt ++ self.external_control = external_control ++ self.migration_id = migration_id ++ self.phase = phase ++ self.source_api_addrs = source_api_addrs ++ self.source_ca_cert = source_ca_cert ++ self.target_api_addrs = target_api_addrs ++ self.target_ca_cert = target_ca_cert ++ ++ ++ ++class MigrationTargetInfo(Type): ++ _toSchema = {'addrs': 'addrs', 'auth_tag': 'auth-tag', 'ca_cert': 'ca-cert', 'controller_tag': 'controller-tag', 'macaroons': 'macaroons', 'password': 'password'} ++ _toPy = {'addrs': 'addrs', 'auth-tag': 'auth_tag', 'ca-cert': 'ca_cert', 'controller-tag': 'controller_tag', 'macaroons': 'macaroons', 'password': 'password'} ++ def __init__(self, addrs=None, auth_tag=None, ca_cert=None, controller_tag=None, macaroons=None, password=None, **unknown_fields): ++ ''' ++ addrs : typing.Sequence<+T_co>[str] ++ auth_tag : str ++ ca_cert : str ++ controller_tag : str ++ macaroons : str ++ password : str ++ ''' ++ self.addrs = addrs ++ self.auth_tag = auth_tag ++ self.ca_cert = ca_cert ++ self.controller_tag = controller_tag ++ self.macaroons = macaroons ++ self.password = password ++ ++ ++ ++class MinionReport(Type): ++ _toSchema = {'migration_id': 'migration-id', 'phase': 'phase', 'success': 'success'} ++ _toPy = {'migration-id': 'migration_id', 'phase': 'phase', 'success': 'success'} ++ def __init__(self, migration_id=None, phase=None, success=None, **unknown_fields): ++ ''' ++ migration_id : str ++ phase : str ++ success : bool ++ ''' ++ self.migration_id = migration_id ++ self.phase = phase ++ self.success = success ++ ++ ++ ++class MinionReports(Type): ++ _toSchema = {'failed': 'failed', 'migration_id': 'migration-id', 'phase': 'phase', 'success_count': 'success-count', 'unknown_count': 'unknown-count', 'unknown_sample': 'unknown-sample'} ++ _toPy = {'failed': 'failed', 'migration-id': 'migration_id', 'phase': 'phase', 'success-count': 'success_count', 'unknown-count': 'unknown_count', 'unknown-sample': 'unknown_sample'} ++ def __init__(self, failed=None, migration_id=None, phase=None, success_count=None, unknown_count=None, unknown_sample=None, **unknown_fields): ++ ''' ++ failed : typing.Sequence<+T_co>[str] ++ migration_id : str ++ phase : str ++ success_count : int ++ unknown_count : int ++ unknown_sample : typing.Sequence<+T_co>[str] ++ ''' ++ self.failed = failed ++ self.migration_id = migration_id ++ self.phase = phase ++ self.success_count = success_count ++ self.unknown_count = unknown_count ++ self.unknown_sample = unknown_sample ++ ++ ++ ++class Model(Type): ++ _toSchema = {'name': 'name', 'owner_tag': 'owner-tag', 'uuid': 'uuid'} ++ _toPy = {'name': 'name', 'owner-tag': 'owner_tag', 'uuid': 'uuid'} ++ def __init__(self, name=None, owner_tag=None, uuid=None, **unknown_fields): ++ ''' ++ name : str ++ owner_tag : str ++ uuid : str ++ ''' ++ self.name = name ++ self.owner_tag = owner_tag ++ self.uuid = uuid ++ ++ ++ ++class ModelArgs(Type): ++ _toSchema = {'model_tag': 'model-tag'} ++ _toPy = {'model-tag': 'model_tag'} ++ def __init__(self, model_tag=None, **unknown_fields): ++ ''' ++ model_tag : str ++ ''' ++ self.model_tag = model_tag ++ ++ ++ ++class ModelBlockInfo(Type): ++ _toSchema = {'blocks': 'blocks', 'model_uuid': 'model-uuid', 'name': 'name', 'owner_tag': 'owner-tag'} ++ _toPy = {'blocks': 'blocks', 'model-uuid': 'model_uuid', 'name': 'name', 'owner-tag': 'owner_tag'} ++ def __init__(self, blocks=None, model_uuid=None, name=None, owner_tag=None, **unknown_fields): ++ ''' ++ blocks : typing.Sequence<+T_co>[str] ++ model_uuid : str ++ name : str ++ owner_tag : str ++ ''' ++ self.blocks = blocks ++ self.model_uuid = model_uuid ++ self.name = name ++ self.owner_tag = owner_tag ++ ++ ++ ++class ModelBlockInfoList(Type): ++ _toSchema = {'models': 'models'} ++ _toPy = {'models': 'models'} ++ def __init__(self, models=None, **unknown_fields): ++ ''' ++ models : typing.Sequence<+T_co>[~ModelBlockInfo]<~ModelBlockInfo> ++ ''' ++ self.models = [ModelBlockInfo.from_json(o) for o in models or []] ++ ++ ++ ++class ModelConfigResult(Type): ++ _toSchema = {'config': 'config'} ++ _toPy = {'config': 'config'} ++ def __init__(self, config=None, **unknown_fields): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.config = config ++ ++ ++ ++class ModelConfigResults(Type): ++ _toSchema = {'config': 'config'} ++ _toPy = {'config': 'config'} ++ def __init__(self, config=None, **unknown_fields): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, ~ConfigValue]<~ConfigValue> ++ ''' ++ self.config = config ++ ++ ++ ++class ModelCreateArgs(Type): ++ _toSchema = {'cloud_tag': 'cloud-tag', 'config': 'config', 'credential': 'credential', 'name': 'name', 'owner_tag': 'owner-tag', 'region': 'region'} ++ _toPy = {'cloud-tag': 'cloud_tag', 'config': 'config', 'credential': 'credential', 'name': 'name', 'owner-tag': 'owner_tag', 'region': 'region'} ++ def __init__(self, cloud_tag=None, config=None, credential=None, name=None, owner_tag=None, region=None, **unknown_fields): ++ ''' ++ cloud_tag : str ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ credential : str ++ name : str ++ owner_tag : str ++ region : str ++ ''' ++ self.cloud_tag = cloud_tag ++ self.config = config ++ self.credential = credential ++ self.name = name ++ self.owner_tag = owner_tag ++ self.region = region ++ ++ ++ ++class ModelDefaultValues(Type): ++ _toSchema = {'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'config': 'config'} ++ _toPy = {'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'config': 'config'} ++ def __init__(self, cloud_region=None, cloud_tag=None, config=None, **unknown_fields): ++ ''' ++ cloud_region : str ++ cloud_tag : str ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.cloud_region = cloud_region ++ self.cloud_tag = cloud_tag ++ self.config = config ++ ++ ++ ++class ModelDefaults(Type): ++ _toSchema = {'controller': 'controller', 'default': 'default', 'regions': 'regions'} ++ _toPy = {'controller': 'controller', 'default': 'default', 'regions': 'regions'} ++ def __init__(self, controller=None, default=None, regions=None, **unknown_fields): ++ ''' ++ controller : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ default : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ regions : typing.Sequence<+T_co>[~RegionDefaults]<~RegionDefaults> ++ ''' ++ self.controller = controller ++ self.default = default ++ self.regions = [RegionDefaults.from_json(o) for o in regions or []] ++ ++ ++ ++class ModelDefaultsResult(Type): ++ _toSchema = {'config': 'config'} ++ _toPy = {'config': 'config'} ++ def __init__(self, config=None, **unknown_fields): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, ~ModelDefaults]<~ModelDefaults> ++ ''' ++ self.config = config ++ ++ ++ ++class ModelInfo(Type): ++ _toSchema = {'agent_version': 'agent-version', 'cloud_credential_tag': 'cloud-credential-tag', 'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'controller_uuid': 'controller-uuid', 'default_series': 'default-series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner_tag': 'owner-tag', 'provider_type': 'provider-type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'} ++ _toPy = {'agent-version': 'agent_version', 'cloud-credential-tag': 'cloud_credential_tag', 'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'controller-uuid': 'controller_uuid', 'default-series': 'default_series', 'life': 'life', 'machines': 'machines', 'migration': 'migration', 'name': 'name', 'owner-tag': 'owner_tag', 'provider-type': 'provider_type', 'sla': 'sla', 'status': 'status', 'users': 'users', 'uuid': 'uuid'} ++ def __init__(self, agent_version=None, cloud_credential_tag=None, cloud_region=None, cloud_tag=None, controller_uuid=None, default_series=None, life=None, machines=None, migration=None, name=None, owner_tag=None, provider_type=None, sla=None, status=None, users=None, uuid=None, **unknown_fields): ++ ''' ++ agent_version : Number ++ cloud_credential_tag : str ++ cloud_region : str ++ cloud_tag : str ++ controller_uuid : str ++ default_series : str ++ life : str ++ machines : typing.Sequence<+T_co>[~ModelMachineInfo]<~ModelMachineInfo> ++ migration : ModelMigrationStatus ++ name : str ++ owner_tag : str ++ provider_type : str ++ sla : ModelSLAInfo ++ status : EntityStatus ++ users : typing.Sequence<+T_co>[~ModelUserInfo]<~ModelUserInfo> ++ uuid : str ++ ''' ++ self.agent_version = Number.from_json(agent_version) if agent_version else None ++ self.cloud_credential_tag = cloud_credential_tag ++ self.cloud_region = cloud_region ++ self.cloud_tag = cloud_tag ++ self.controller_uuid = controller_uuid ++ self.default_series = default_series ++ self.life = life ++ self.machines = [ModelMachineInfo.from_json(o) for o in machines or []] ++ self.migration = ModelMigrationStatus.from_json(migration) if migration else None ++ self.name = name ++ self.owner_tag = owner_tag ++ self.provider_type = provider_type ++ self.sla = ModelSLAInfo.from_json(sla) if sla else None ++ self.status = EntityStatus.from_json(status) if status else None ++ self.users = [ModelUserInfo.from_json(o) for o in users or []] ++ self.uuid = uuid ++ ++ ++ ++class ModelInfoResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : ModelInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = ModelInfo.from_json(result) if result else None ++ ++ ++ ++class ModelInfoResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ModelInfoResult]<~ModelInfoResult> ++ ''' ++ self.results = [ModelInfoResult.from_json(o) for o in results or []] ++ ++ ++ ++class ModelInstanceTypesConstraint(Type): ++ _toSchema = {'value': 'value'} ++ _toPy = {'value': 'value'} ++ def __init__(self, value=None, **unknown_fields): ++ ''' ++ value : Value ++ ''' ++ self.value = Value.from_json(value) if value else None ++ ++ ++ ++class ModelInstanceTypesConstraints(Type): ++ _toSchema = {'constraints': 'constraints'} ++ _toPy = {'constraints': 'constraints'} ++ def __init__(self, constraints=None, **unknown_fields): ++ ''' ++ constraints : typing.Sequence<+T_co>[~ModelInstanceTypesConstraint]<~ModelInstanceTypesConstraint> ++ ''' ++ self.constraints = [ModelInstanceTypesConstraint.from_json(o) for o in constraints or []] ++ ++ ++ ++class ModelMachineInfo(Type): ++ _toSchema = {'hardware': 'hardware', 'has_vote': 'has-vote', 'id_': 'id', 'instance_id': 'instance-id', 'status': 'status', 'wants_vote': 'wants-vote'} ++ _toPy = {'hardware': 'hardware', 'has-vote': 'has_vote', 'id': 'id_', 'instance-id': 'instance_id', 'status': 'status', 'wants-vote': 'wants_vote'} ++ def __init__(self, hardware=None, has_vote=None, id_=None, instance_id=None, status=None, wants_vote=None, **unknown_fields): ++ ''' ++ hardware : MachineHardware ++ has_vote : bool ++ id_ : str ++ instance_id : str ++ status : str ++ wants_vote : bool ++ ''' ++ self.hardware = MachineHardware.from_json(hardware) if hardware else None ++ self.has_vote = has_vote ++ self.id_ = id_ ++ self.instance_id = instance_id ++ self.status = status ++ self.wants_vote = wants_vote ++ ++ ++ ++class ModelMigrationStatus(Type): ++ _toSchema = {'end': 'end', 'start': 'start', 'status': 'status'} ++ _toPy = {'end': 'end', 'start': 'start', 'status': 'status'} ++ def __init__(self, end=None, start=None, status=None, **unknown_fields): ++ ''' ++ end : str ++ start : str ++ status : str ++ ''' ++ self.end = end ++ self.start = start ++ self.status = status ++ ++ ++ ++class ModelResult(Type): ++ _toSchema = {'error': 'error', 'name': 'name', 'uuid': 'uuid'} ++ _toPy = {'error': 'error', 'name': 'name', 'uuid': 'uuid'} ++ def __init__(self, error=None, name=None, uuid=None, **unknown_fields): ++ ''' ++ error : Error ++ name : str ++ uuid : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.name = name ++ self.uuid = uuid ++ ++ ++ ++class ModelSLA(Type): ++ _toSchema = {'creds': 'creds', 'level': 'level'} ++ _toPy = {'creds': 'creds', 'level': 'level'} ++ def __init__(self, creds=None, level=None, **unknown_fields): ++ ''' ++ creds : typing.Sequence<+T_co>[int] ++ level : str ++ ''' ++ self.creds = creds ++ self.level = level ++ ++ ++ ++class ModelSLAInfo(Type): ++ _toSchema = {'level': 'level', 'owner': 'owner'} ++ _toPy = {'level': 'level', 'owner': 'owner'} ++ def __init__(self, level=None, owner=None, **unknown_fields): ++ ''' ++ level : str ++ owner : str ++ ''' ++ self.level = level ++ self.owner = owner ++ ++ ++ ++class ModelSet(Type): ++ _toSchema = {'config': 'config'} ++ _toPy = {'config': 'config'} ++ def __init__(self, config=None, **unknown_fields): ++ ''' ++ config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.config = config ++ ++ ++ ++class ModelStatus(Type): ++ _toSchema = {'application_count': 'application-count', 'hosted_machine_count': 'hosted-machine-count', 'life': 'life', 'machines': 'machines', 'model_tag': 'model-tag', 'owner_tag': 'owner-tag'} ++ _toPy = {'application-count': 'application_count', 'hosted-machine-count': 'hosted_machine_count', 'life': 'life', 'machines': 'machines', 'model-tag': 'model_tag', 'owner-tag': 'owner_tag'} ++ def __init__(self, application_count=None, hosted_machine_count=None, life=None, machines=None, model_tag=None, owner_tag=None, **unknown_fields): ++ ''' ++ application_count : int ++ hosted_machine_count : int ++ life : str ++ machines : typing.Sequence<+T_co>[~ModelMachineInfo]<~ModelMachineInfo> ++ model_tag : str ++ owner_tag : str ++ ''' ++ self.application_count = application_count ++ self.hosted_machine_count = hosted_machine_count ++ self.life = life ++ self.machines = [ModelMachineInfo.from_json(o) for o in machines or []] ++ self.model_tag = model_tag ++ self.owner_tag = owner_tag ++ ++ ++ ++class ModelStatusInfo(Type): ++ _toSchema = {'available_version': 'available-version', 'cloud_tag': 'cloud-tag', 'meter_status': 'meter-status', 'model_status': 'model-status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'version': 'version'} ++ _toPy = {'available-version': 'available_version', 'cloud-tag': 'cloud_tag', 'meter-status': 'meter_status', 'model-status': 'model_status', 'name': 'name', 'region': 'region', 'sla': 'sla', 'version': 'version'} ++ def __init__(self, available_version=None, cloud_tag=None, meter_status=None, model_status=None, name=None, region=None, sla=None, version=None, **unknown_fields): ++ ''' ++ available_version : str ++ cloud_tag : str ++ meter_status : MeterStatus ++ model_status : DetailedStatus ++ name : str ++ region : str ++ sla : str ++ version : str ++ ''' ++ self.available_version = available_version ++ self.cloud_tag = cloud_tag ++ self.meter_status = MeterStatus.from_json(meter_status) if meter_status else None ++ self.model_status = DetailedStatus.from_json(model_status) if model_status else None ++ self.name = name ++ self.region = region ++ self.sla = sla ++ self.version = version ++ ++ ++ ++class ModelStatusResults(Type): ++ _toSchema = {'models': 'models'} ++ _toPy = {'models': 'models'} ++ def __init__(self, models=None, **unknown_fields): ++ ''' ++ models : typing.Sequence<+T_co>[~ModelStatus]<~ModelStatus> ++ ''' ++ self.models = [ModelStatus.from_json(o) for o in models or []] ++ ++ ++ ++class ModelTag(Type): ++ _toSchema = {} ++ _toPy = {} ++ def __init__(self, **unknown_fields): ++ ''' ++ ++ ''' ++ pass ++ ++ ++ ++class ModelUnset(Type): ++ _toSchema = {'keys': 'keys'} ++ _toPy = {'keys': 'keys'} ++ def __init__(self, keys=None, **unknown_fields): ++ ''' ++ keys : typing.Sequence<+T_co>[str] ++ ''' ++ self.keys = keys ++ ++ ++ ++class ModelUnsetKeys(Type): ++ _toSchema = {'cloud_region': 'cloud-region', 'cloud_tag': 'cloud-tag', 'keys': 'keys'} ++ _toPy = {'cloud-region': 'cloud_region', 'cloud-tag': 'cloud_tag', 'keys': 'keys'} ++ def __init__(self, cloud_region=None, cloud_tag=None, keys=None, **unknown_fields): ++ ''' ++ cloud_region : str ++ cloud_tag : str ++ keys : typing.Sequence<+T_co>[str] ++ ''' ++ self.cloud_region = cloud_region ++ self.cloud_tag = cloud_tag ++ self.keys = keys ++ ++ ++ ++class ModelUserInfo(Type): ++ _toSchema = {'access': 'access', 'display_name': 'display-name', 'last_connection': 'last-connection', 'user': 'user'} ++ _toPy = {'access': 'access', 'display-name': 'display_name', 'last-connection': 'last_connection', 'user': 'user'} ++ def __init__(self, access=None, display_name=None, last_connection=None, user=None, **unknown_fields): ++ ''' ++ access : str ++ display_name : str ++ last_connection : str ++ user : str ++ ''' ++ self.access = access ++ self.display_name = display_name ++ self.last_connection = last_connection ++ self.user = user ++ ++ ++ ++class ModelUserInfoResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : ModelUserInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = ModelUserInfo.from_json(result) if result else None ++ ++ ++ ++class ModelUserInfoResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ModelUserInfoResult]<~ModelUserInfoResult> ++ ''' ++ self.results = [ModelUserInfoResult.from_json(o) for o in results or []] ++ ++ ++ ++class ModifyControllerAccess(Type): ++ _toSchema = {'access': 'access', 'action': 'action', 'user_tag': 'user-tag'} ++ _toPy = {'access': 'access', 'action': 'action', 'user-tag': 'user_tag'} ++ def __init__(self, access=None, action=None, user_tag=None, **unknown_fields): ++ ''' ++ access : str ++ action : str ++ user_tag : str ++ ''' ++ self.access = access ++ self.action = action ++ self.user_tag = user_tag ++ ++ ++ ++class ModifyControllerAccessRequest(Type): ++ _toSchema = {'changes': 'changes'} ++ _toPy = {'changes': 'changes'} ++ def __init__(self, changes=None, **unknown_fields): ++ ''' ++ changes : typing.Sequence<+T_co>[~ModifyControllerAccess]<~ModifyControllerAccess> ++ ''' ++ self.changes = [ModifyControllerAccess.from_json(o) for o in changes or []] ++ ++ ++ ++class ModifyModelAccess(Type): ++ _toSchema = {'access': 'access', 'action': 'action', 'model_tag': 'model-tag', 'user_tag': 'user-tag'} ++ _toPy = {'access': 'access', 'action': 'action', 'model-tag': 'model_tag', 'user-tag': 'user_tag'} ++ def __init__(self, access=None, action=None, model_tag=None, user_tag=None, **unknown_fields): ++ ''' ++ access : str ++ action : str ++ model_tag : str ++ user_tag : str ++ ''' ++ self.access = access ++ self.action = action ++ self.model_tag = model_tag ++ self.user_tag = user_tag ++ ++ ++ ++class ModifyModelAccessRequest(Type): ++ _toSchema = {'changes': 'changes'} ++ _toPy = {'changes': 'changes'} ++ def __init__(self, changes=None, **unknown_fields): ++ ''' ++ changes : typing.Sequence<+T_co>[~ModifyModelAccess]<~ModifyModelAccess> ++ ''' ++ self.changes = [ModifyModelAccess.from_json(o) for o in changes or []] ++ ++ ++ ++class ModifyUserSSHKeys(Type): ++ _toSchema = {'ssh_keys': 'ssh-keys', 'user': 'user'} ++ _toPy = {'ssh-keys': 'ssh_keys', 'user': 'user'} ++ def __init__(self, ssh_keys=None, user=None, **unknown_fields): ++ ''' ++ ssh_keys : typing.Sequence<+T_co>[str] ++ user : str ++ ''' ++ self.ssh_keys = ssh_keys ++ self.user = user ++ ++ ++ ++class MongoUpgradeResults(Type): ++ _toSchema = {'ha_members': 'ha-members', 'master': 'master', 'rs_members': 'rs-members'} ++ _toPy = {'ha-members': 'ha_members', 'master': 'master', 'rs-members': 'rs_members'} ++ def __init__(self, ha_members=None, master=None, rs_members=None, **unknown_fields): ++ ''' ++ ha_members : typing.Sequence<+T_co>[~HAMember]<~HAMember> ++ master : HAMember ++ rs_members : typing.Sequence<+T_co>[~Member]<~Member> ++ ''' ++ self.ha_members = [HAMember.from_json(o) for o in ha_members or []] ++ self.master = HAMember.from_json(master) if master else None ++ self.rs_members = [Member.from_json(o) for o in rs_members or []] ++ ++ ++ ++class MongoVersion(Type): ++ _toSchema = {'engine': 'engine', 'major': 'major', 'minor': 'minor', 'patch': 'patch'} ++ _toPy = {'engine': 'engine', 'major': 'major', 'minor': 'minor', 'patch': 'patch'} ++ def __init__(self, engine=None, major=None, minor=None, patch=None, **unknown_fields): ++ ''' ++ engine : str ++ major : int ++ minor : int ++ patch : str ++ ''' ++ self.engine = engine ++ self.major = major ++ self.minor = minor ++ self.patch = patch ++ ++ ++ ++class NetworkConfig(Type): ++ _toSchema = {'address': 'address', 'cidr': 'cidr', 'config_type': 'config-type', 'device_index': 'device-index', 'disabled': 'disabled', 'dns_search_domains': 'dns-search-domains', 'dns_servers': 'dns-servers', 'gateway_address': 'gateway-address', 'interface_name': 'interface-name', 'interface_type': 'interface-type', 'mac_address': 'mac-address', 'mtu': 'mtu', 'no_auto_start': 'no-auto-start', 'parent_interface_name': 'parent-interface-name', 'provider_address_id': 'provider-address-id', 'provider_id': 'provider-id', 'provider_space_id': 'provider-space-id', 'provider_subnet_id': 'provider-subnet-id', 'provider_vlan_id': 'provider-vlan-id', 'vlan_tag': 'vlan-tag'} ++ _toPy = {'address': 'address', 'cidr': 'cidr', 'config-type': 'config_type', 'device-index': 'device_index', 'disabled': 'disabled', 'dns-search-domains': 'dns_search_domains', 'dns-servers': 'dns_servers', 'gateway-address': 'gateway_address', 'interface-name': 'interface_name', 'interface-type': 'interface_type', 'mac-address': 'mac_address', 'mtu': 'mtu', 'no-auto-start': 'no_auto_start', 'parent-interface-name': 'parent_interface_name', 'provider-address-id': 'provider_address_id', 'provider-id': 'provider_id', 'provider-space-id': 'provider_space_id', 'provider-subnet-id': 'provider_subnet_id', 'provider-vlan-id': 'provider_vlan_id', 'vlan-tag': 'vlan_tag'} ++ def __init__(self, address=None, cidr=None, config_type=None, device_index=None, disabled=None, dns_search_domains=None, dns_servers=None, gateway_address=None, interface_name=None, interface_type=None, mac_address=None, mtu=None, no_auto_start=None, parent_interface_name=None, provider_address_id=None, provider_id=None, provider_space_id=None, provider_subnet_id=None, provider_vlan_id=None, vlan_tag=None, **unknown_fields): ++ ''' ++ address : str ++ cidr : str ++ config_type : str ++ device_index : int ++ disabled : bool ++ dns_search_domains : typing.Sequence<+T_co>[str] ++ dns_servers : typing.Sequence<+T_co>[str] ++ gateway_address : str ++ interface_name : str ++ interface_type : str ++ mac_address : str ++ mtu : int ++ no_auto_start : bool ++ parent_interface_name : str ++ provider_address_id : str ++ provider_id : str ++ provider_space_id : str ++ provider_subnet_id : str ++ provider_vlan_id : str ++ vlan_tag : int ++ ''' ++ self.address = address ++ self.cidr = cidr ++ self.config_type = config_type ++ self.device_index = device_index ++ self.disabled = disabled ++ self.dns_search_domains = dns_search_domains ++ self.dns_servers = dns_servers ++ self.gateway_address = gateway_address ++ self.interface_name = interface_name ++ self.interface_type = interface_type ++ self.mac_address = mac_address ++ self.mtu = mtu ++ self.no_auto_start = no_auto_start ++ self.parent_interface_name = parent_interface_name ++ self.provider_address_id = provider_address_id ++ self.provider_id = provider_id ++ self.provider_space_id = provider_space_id ++ self.provider_subnet_id = provider_subnet_id ++ self.provider_vlan_id = provider_vlan_id ++ self.vlan_tag = vlan_tag ++ ++ ++ ++class NetworkInfo(Type): ++ _toSchema = {'addresses': 'addresses', 'interface_name': 'interface-name', 'mac_address': 'mac-address'} ++ _toPy = {'addresses': 'addresses', 'interface-name': 'interface_name', 'mac-address': 'mac_address'} ++ def __init__(self, addresses=None, interface_name=None, mac_address=None, **unknown_fields): ++ ''' ++ addresses : typing.Sequence<+T_co>[~InterfaceAddress]<~InterfaceAddress> ++ interface_name : str ++ mac_address : str ++ ''' ++ self.addresses = [InterfaceAddress.from_json(o) for o in addresses or []] ++ self.interface_name = interface_name ++ self.mac_address = mac_address ++ ++ ++ ++class NetworkInfoParams(Type): ++ _toSchema = {'bindings': 'bindings', 'unit': 'unit'} ++ _toPy = {'bindings': 'bindings', 'unit': 'unit'} ++ def __init__(self, bindings=None, unit=None, **unknown_fields): ++ ''' ++ bindings : typing.Sequence<+T_co>[str] ++ unit : str ++ ''' ++ self.bindings = bindings ++ self.unit = unit ++ ++ ++ ++class NetworkInfoResult(Type): ++ _toSchema = {'error': 'error', 'network_info': 'network-info'} ++ _toPy = {'error': 'error', 'network-info': 'network_info'} ++ def __init__(self, error=None, network_info=None, **unknown_fields): ++ ''' ++ error : Error ++ network_info : typing.Sequence<+T_co>[~NetworkInfo]<~NetworkInfo> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.network_info = [NetworkInfo.from_json(o) for o in network_info or []] ++ ++ ++ ++class NetworkInfoResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Mapping<~KT, +VT_co>[str, ~NetworkInfoResult]<~NetworkInfoResult> ++ ''' ++ self.results = results ++ ++ ++ ++class NetworkInterface(Type): ++ _toSchema = {'dns_nameservers': 'dns-nameservers', 'gateway': 'gateway', 'ip_addresses': 'ip-addresses', 'is_up': 'is-up', 'mac_address': 'mac-address', 'space': 'space'} ++ _toPy = {'dns-nameservers': 'dns_nameservers', 'gateway': 'gateway', 'ip-addresses': 'ip_addresses', 'is-up': 'is_up', 'mac-address': 'mac_address', 'space': 'space'} ++ def __init__(self, dns_nameservers=None, gateway=None, ip_addresses=None, is_up=None, mac_address=None, space=None, **unknown_fields): ++ ''' ++ dns_nameservers : typing.Sequence<+T_co>[str] ++ gateway : str ++ ip_addresses : typing.Sequence<+T_co>[str] ++ is_up : bool ++ mac_address : str ++ space : str ++ ''' ++ self.dns_nameservers = dns_nameservers ++ self.gateway = gateway ++ self.ip_addresses = ip_addresses ++ self.is_up = is_up ++ self.mac_address = mac_address ++ self.space = space ++ ++ ++ ++class NetworkRoute(Type): ++ _toSchema = {'destination_cidr': 'destination-cidr', 'gateway_ip': 'gateway-ip', 'metric': 'metric'} ++ _toPy = {'destination-cidr': 'destination_cidr', 'gateway-ip': 'gateway_ip', 'metric': 'metric'} ++ def __init__(self, destination_cidr=None, gateway_ip=None, metric=None, **unknown_fields): ++ ''' ++ destination_cidr : str ++ gateway_ip : str ++ metric : int ++ ''' ++ self.destination_cidr = destination_cidr ++ self.gateway_ip = gateway_ip ++ self.metric = metric ++ ++ ++ ++class NotifyWatchResult(Type): ++ _toSchema = {'error': 'error', 'notifywatcherid': 'NotifyWatcherId'} ++ _toPy = {'NotifyWatcherId': 'notifywatcherid', 'error': 'error'} ++ def __init__(self, notifywatcherid=None, error=None, **unknown_fields): ++ ''' ++ notifywatcherid : str ++ error : Error ++ ''' ++ self.notifywatcherid = notifywatcherid ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class NotifyWatchResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~NotifyWatchResult]<~NotifyWatchResult> ++ ''' ++ self.results = [NotifyWatchResult.from_json(o) for o in results or []] ++ ++ ++ ++class Number(Type): ++ _toSchema = {'build': 'Build', 'major': 'Major', 'minor': 'Minor', 'patch': 'Patch', 'tag': 'Tag'} ++ _toPy = {'Build': 'build', 'Major': 'major', 'Minor': 'minor', 'Patch': 'patch', 'Tag': 'tag'} ++ def __init__(self, build=None, major=None, minor=None, patch=None, tag=None, **unknown_fields): ++ ''' ++ build : int ++ major : int ++ minor : int ++ patch : int ++ tag : str ++ ''' ++ self.build = build ++ self.major = major ++ self.minor = minor ++ self.patch = patch ++ self.tag = tag ++ ++ ++ ++class Payload(Type): ++ _toSchema = {'class_': 'class', 'id_': 'id', 'labels': 'labels', 'machine': 'machine', 'status': 'status', 'type_': 'type', 'unit': 'unit'} ++ _toPy = {'class': 'class_', 'id': 'id_', 'labels': 'labels', 'machine': 'machine', 'status': 'status', 'type': 'type_', 'unit': 'unit'} ++ def __init__(self, class_=None, id_=None, labels=None, machine=None, status=None, type_=None, unit=None, **unknown_fields): ++ ''' ++ class_ : str ++ id_ : str ++ labels : typing.Sequence<+T_co>[str] ++ machine : str ++ status : str ++ type_ : str ++ unit : str ++ ''' ++ self.class_ = class_ ++ self.id_ = id_ ++ self.labels = labels ++ self.machine = machine ++ self.status = status ++ self.type_ = type_ ++ self.unit = unit ++ ++ ++ ++class PayloadListArgs(Type): ++ _toSchema = {'patterns': 'patterns'} ++ _toPy = {'patterns': 'patterns'} ++ def __init__(self, patterns=None, **unknown_fields): ++ ''' ++ patterns : typing.Sequence<+T_co>[str] ++ ''' ++ self.patterns = patterns ++ ++ ++ ++class PayloadListResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~Payload]<~Payload> ++ ''' ++ self.results = [Payload.from_json(o) for o in results or []] ++ ++ ++ ++class PayloadResult(Type): ++ _toSchema = {'entity': 'Entity', 'error': 'error', 'not_found': 'not-found', 'payload': 'payload'} ++ _toPy = {'Entity': 'entity', 'error': 'error', 'not-found': 'not_found', 'payload': 'payload'} ++ def __init__(self, entity=None, error=None, not_found=None, payload=None, **unknown_fields): ++ ''' ++ entity : Entity ++ error : Error ++ not_found : bool ++ payload : Payload ++ ''' ++ self.entity = Entity.from_json(entity) if entity else None ++ self.error = Error.from_json(error) if error else None ++ self.not_found = not_found ++ self.payload = Payload.from_json(payload) if payload else None ++ ++ ++ ++class PayloadResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~PayloadResult]<~PayloadResult> ++ ''' ++ self.results = [PayloadResult.from_json(o) for o in results or []] ++ ++ ++ ++class PhaseResult(Type): ++ _toSchema = {'error': 'error', 'phase': 'phase'} ++ _toPy = {'error': 'error', 'phase': 'phase'} ++ def __init__(self, error=None, phase=None, **unknown_fields): ++ ''' ++ error : Error ++ phase : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.phase = phase ++ ++ ++ ++class PhaseResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~PhaseResult]<~PhaseResult> ++ ''' ++ self.results = [PhaseResult.from_json(o) for o in results or []] ++ ++ ++ ++class Placement(Type): ++ _toSchema = {'directive': 'directive', 'scope': 'scope'} ++ _toPy = {'directive': 'directive', 'scope': 'scope'} ++ def __init__(self, directive=None, scope=None, **unknown_fields): ++ ''' ++ directive : str ++ scope : str ++ ''' ++ self.directive = directive ++ self.scope = scope ++ ++ ++ ++class PortRange(Type): ++ _toSchema = {'from_port': 'from-port', 'protocol': 'protocol', 'to_port': 'to-port'} ++ _toPy = {'from-port': 'from_port', 'protocol': 'protocol', 'to-port': 'to_port'} ++ def __init__(self, from_port=None, protocol=None, to_port=None, **unknown_fields): ++ ''' ++ from_port : int ++ protocol : str ++ to_port : int ++ ''' ++ self.from_port = from_port ++ self.protocol = protocol ++ self.to_port = to_port ++ ++ ++ ++class PrivateAddress(Type): ++ _toSchema = {'target': 'target'} ++ _toPy = {'target': 'target'} ++ def __init__(self, target=None, **unknown_fields): ++ ''' ++ target : str ++ ''' ++ self.target = target ++ ++ ++ ++class PrivateAddressResults(Type): ++ _toSchema = {'private_address': 'private-address'} ++ _toPy = {'private-address': 'private_address'} ++ def __init__(self, private_address=None, **unknown_fields): ++ ''' ++ private_address : str ++ ''' ++ self.private_address = private_address ++ ++ ++ ++class ProviderInterfaceInfo(Type): ++ _toSchema = {'interface_name': 'interface-name', 'mac_address': 'mac-address', 'provider_id': 'provider-id'} ++ _toPy = {'interface-name': 'interface_name', 'mac-address': 'mac_address', 'provider-id': 'provider_id'} ++ def __init__(self, interface_name=None, mac_address=None, provider_id=None, **unknown_fields): ++ ''' ++ interface_name : str ++ mac_address : str ++ provider_id : str ++ ''' ++ self.interface_name = interface_name ++ self.mac_address = mac_address ++ self.provider_id = provider_id ++ ++ ++ ++class ProviderInterfaceInfoResult(Type): ++ _toSchema = {'error': 'error', 'interfaces': 'interfaces', 'machine_tag': 'machine-tag'} ++ _toPy = {'error': 'error', 'interfaces': 'interfaces', 'machine-tag': 'machine_tag'} ++ def __init__(self, error=None, interfaces=None, machine_tag=None, **unknown_fields): ++ ''' ++ error : Error ++ interfaces : typing.Sequence<+T_co>[~ProviderInterfaceInfo]<~ProviderInterfaceInfo> ++ machine_tag : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.interfaces = [ProviderInterfaceInfo.from_json(o) for o in interfaces or []] ++ self.machine_tag = machine_tag ++ ++ ++ ++class ProviderInterfaceInfoResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ProviderInterfaceInfoResult]<~ProviderInterfaceInfoResult> ++ ''' ++ self.results = [ProviderInterfaceInfoResult.from_json(o) for o in results or []] ++ ++ ++ ++class ProviderSpace(Type): ++ _toSchema = {'error': 'error', 'name': 'name', 'provider_id': 'provider-id', 'subnets': 'subnets'} ++ _toPy = {'error': 'error', 'name': 'name', 'provider-id': 'provider_id', 'subnets': 'subnets'} ++ def __init__(self, error=None, name=None, provider_id=None, subnets=None, **unknown_fields): ++ ''' ++ error : Error ++ name : str ++ provider_id : str ++ subnets : typing.Sequence<+T_co>[~Subnet]<~Subnet> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.name = name ++ self.provider_id = provider_id ++ self.subnets = [Subnet.from_json(o) for o in subnets or []] ++ ++ ++ ++class ProvisioningInfo(Type): ++ _toSchema = {'constraints': 'constraints', 'controller_config': 'controller-config', 'endpoint_bindings': 'endpoint-bindings', 'image_metadata': 'image-metadata', 'jobs': 'jobs', 'placement': 'placement', 'series': 'series', 'subnets_to_zones': 'subnets-to-zones', 'tags': 'tags', 'volumes': 'volumes'} ++ _toPy = {'constraints': 'constraints', 'controller-config': 'controller_config', 'endpoint-bindings': 'endpoint_bindings', 'image-metadata': 'image_metadata', 'jobs': 'jobs', 'placement': 'placement', 'series': 'series', 'subnets-to-zones': 'subnets_to_zones', 'tags': 'tags', 'volumes': 'volumes'} ++ def __init__(self, constraints=None, controller_config=None, endpoint_bindings=None, image_metadata=None, jobs=None, placement=None, series=None, subnets_to_zones=None, tags=None, volumes=None, **unknown_fields): ++ ''' ++ constraints : Value ++ controller_config : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ endpoint_bindings : typing.Mapping<~KT, +VT_co>[str, str] ++ image_metadata : typing.Sequence<+T_co>[~CloudImageMetadata]<~CloudImageMetadata> ++ jobs : typing.Sequence<+T_co>[str] ++ placement : str ++ series : str ++ subnets_to_zones : typing.Sequence<+T_co>[str] ++ tags : typing.Mapping<~KT, +VT_co>[str, str] ++ volumes : typing.Sequence<+T_co>[~VolumeParams]<~VolumeParams> ++ ''' ++ self.constraints = Value.from_json(constraints) if constraints else None ++ self.controller_config = controller_config ++ self.endpoint_bindings = endpoint_bindings ++ self.image_metadata = [CloudImageMetadata.from_json(o) for o in image_metadata or []] ++ self.jobs = jobs ++ self.placement = placement ++ self.series = series ++ self.subnets_to_zones = subnets_to_zones ++ self.tags = tags ++ self.volumes = [VolumeParams.from_json(o) for o in volumes or []] ++ ++ ++ ++class ProvisioningInfoResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : ProvisioningInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = ProvisioningInfo.from_json(result) if result else None ++ ++ ++ ++class ProvisioningInfoResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ProvisioningInfoResult]<~ProvisioningInfoResult> ++ ''' ++ self.results = [ProvisioningInfoResult.from_json(o) for o in results or []] ++ ++ ++ ++class ProvisioningScriptParams(Type): ++ _toSchema = {'data_dir': 'data-dir', 'disable_package_commands': 'disable-package-commands', 'machine_id': 'machine-id', 'nonce': 'nonce'} ++ _toPy = {'data-dir': 'data_dir', 'disable-package-commands': 'disable_package_commands', 'machine-id': 'machine_id', 'nonce': 'nonce'} ++ def __init__(self, data_dir=None, disable_package_commands=None, machine_id=None, nonce=None, **unknown_fields): ++ ''' ++ data_dir : str ++ disable_package_commands : bool ++ machine_id : str ++ nonce : str ++ ''' ++ self.data_dir = data_dir ++ self.disable_package_commands = disable_package_commands ++ self.machine_id = machine_id ++ self.nonce = nonce ++ ++ ++ ++class ProvisioningScriptResult(Type): ++ _toSchema = {'script': 'script'} ++ _toPy = {'script': 'script'} ++ def __init__(self, script=None, **unknown_fields): ++ ''' ++ script : str ++ ''' ++ self.script = script ++ ++ ++ ++class ProxyConfig(Type): ++ _toSchema = {'ftp': 'ftp', 'http': 'http', 'https': 'https', 'no_proxy': 'no-proxy'} ++ _toPy = {'ftp': 'ftp', 'http': 'http', 'https': 'https', 'no-proxy': 'no_proxy'} ++ def __init__(self, ftp=None, http=None, https=None, no_proxy=None, **unknown_fields): ++ ''' ++ ftp : str ++ http : str ++ https : str ++ no_proxy : str ++ ''' ++ self.ftp = ftp ++ self.http = http ++ self.https = https ++ self.no_proxy = no_proxy ++ ++ ++ ++class ProxyConfigResult(Type): ++ _toSchema = {'apt_proxy_settings': 'apt-proxy-settings', 'error': 'error', 'proxy_settings': 'proxy-settings'} ++ _toPy = {'apt-proxy-settings': 'apt_proxy_settings', 'error': 'error', 'proxy-settings': 'proxy_settings'} ++ def __init__(self, apt_proxy_settings=None, error=None, proxy_settings=None, **unknown_fields): ++ ''' ++ apt_proxy_settings : ProxyConfig ++ error : Error ++ proxy_settings : ProxyConfig ++ ''' ++ self.apt_proxy_settings = ProxyConfig.from_json(apt_proxy_settings) if apt_proxy_settings else None ++ self.error = Error.from_json(error) if error else None ++ self.proxy_settings = ProxyConfig.from_json(proxy_settings) if proxy_settings else None ++ ++ ++ ++class ProxyConfigResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ProxyConfigResult]<~ProxyConfigResult> ++ ''' ++ self.results = [ProxyConfigResult.from_json(o) for o in results or []] ++ ++ ++ ++class PublicAddress(Type): ++ _toSchema = {'target': 'target'} ++ _toPy = {'target': 'target'} ++ def __init__(self, target=None, **unknown_fields): ++ ''' ++ target : str ++ ''' ++ self.target = target ++ ++ ++ ++class PublicAddressResults(Type): ++ _toSchema = {'public_address': 'public-address'} ++ _toPy = {'public-address': 'public_address'} ++ def __init__(self, public_address=None, **unknown_fields): ++ ''' ++ public_address : str ++ ''' ++ self.public_address = public_address ++ ++ ++ ++class RebootActionResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = result ++ ++ ++ ++class RebootActionResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~RebootActionResult]<~RebootActionResult> ++ ''' ++ self.results = [RebootActionResult.from_json(o) for o in results or []] ++ ++ ++ ++class RegionDefaults(Type): ++ _toSchema = {'region_name': 'region-name', 'value': 'value'} ++ _toPy = {'region-name': 'region_name', 'value': 'value'} ++ def __init__(self, region_name=None, value=None, **unknown_fields): ++ ''' ++ region_name : str ++ value : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.region_name = region_name ++ self.value = value ++ ++ ++ ++class RelationChange(Type): ++ _toSchema = {'changedunits': 'changedunits', 'departedunits': 'departedunits', 'id_': 'id', 'life': 'life'} ++ _toPy = {'changedunits': 'changedunits', 'departedunits': 'departedunits', 'id': 'id_', 'life': 'life'} ++ def __init__(self, changedunits=None, departedunits=None, id_=None, life=None, **unknown_fields): ++ ''' ++ changedunits : typing.Mapping<~KT, +VT_co>[str, ~RelationUnitChange]<~RelationUnitChange> ++ departedunits : typing.Sequence<+T_co>[str] ++ id_ : int ++ life : str ++ ''' ++ self.changedunits = changedunits ++ self.departedunits = departedunits ++ self.id_ = id_ ++ self.life = life ++ ++ ++ ++class RelationIds(Type): ++ _toSchema = {'relation_ids': 'relation-ids'} ++ _toPy = {'relation-ids': 'relation_ids'} ++ def __init__(self, relation_ids=None, **unknown_fields): ++ ''' ++ relation_ids : typing.Sequence<+T_co>[int] ++ ''' ++ self.relation_ids = relation_ids ++ ++ ++ ++class RelationResult(Type): ++ _toSchema = {'endpoint': 'endpoint', 'error': 'error', 'id_': 'id', 'key': 'key', 'life': 'life'} ++ _toPy = {'endpoint': 'endpoint', 'error': 'error', 'id': 'id_', 'key': 'key', 'life': 'life'} ++ def __init__(self, endpoint=None, error=None, id_=None, key=None, life=None, **unknown_fields): ++ ''' ++ endpoint : Endpoint ++ error : Error ++ id_ : int ++ key : str ++ life : str ++ ''' ++ self.endpoint = Endpoint.from_json(endpoint) if endpoint else None ++ self.error = Error.from_json(error) if error else None ++ self.id_ = id_ ++ self.key = key ++ self.life = life ++ ++ ++ ++class RelationResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~RelationResult]<~RelationResult> ++ ''' ++ self.results = [RelationResult.from_json(o) for o in results or []] ++ ++ ++ ++class RelationStatus(Type): ++ _toSchema = {'endpoints': 'endpoints', 'id_': 'id', 'interface': 'interface', 'key': 'key', 'scope': 'scope'} ++ _toPy = {'endpoints': 'endpoints', 'id': 'id_', 'interface': 'interface', 'key': 'key', 'scope': 'scope'} ++ def __init__(self, endpoints=None, id_=None, interface=None, key=None, scope=None, **unknown_fields): ++ ''' ++ endpoints : typing.Sequence<+T_co>[~EndpointStatus]<~EndpointStatus> ++ id_ : int ++ interface : str ++ key : str ++ scope : str ++ ''' ++ self.endpoints = [EndpointStatus.from_json(o) for o in endpoints or []] ++ self.id_ = id_ ++ self.interface = interface ++ self.key = key ++ self.scope = scope ++ ++ ++ ++class RelationUnit(Type): ++ _toSchema = {'relation': 'relation', 'unit': 'unit'} ++ _toPy = {'relation': 'relation', 'unit': 'unit'} ++ def __init__(self, relation=None, unit=None, **unknown_fields): ++ ''' ++ relation : str ++ unit : str ++ ''' ++ self.relation = relation ++ self.unit = unit ++ ++ ++ ++class RelationUnitChange(Type): ++ _toSchema = {'settings': 'settings'} ++ _toPy = {'settings': 'settings'} ++ def __init__(self, settings=None, **unknown_fields): ++ ''' ++ settings : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ ''' ++ self.settings = settings ++ ++ ++ ++class RelationUnitPair(Type): ++ _toSchema = {'local_unit': 'local-unit', 'relation': 'relation', 'remote_unit': 'remote-unit'} ++ _toPy = {'local-unit': 'local_unit', 'relation': 'relation', 'remote-unit': 'remote_unit'} ++ def __init__(self, local_unit=None, relation=None, remote_unit=None, **unknown_fields): ++ ''' ++ local_unit : str ++ relation : str ++ remote_unit : str ++ ''' ++ self.local_unit = local_unit ++ self.relation = relation ++ self.remote_unit = remote_unit ++ ++ ++ ++class RelationUnitPairs(Type): ++ _toSchema = {'relation_unit_pairs': 'relation-unit-pairs'} ++ _toPy = {'relation-unit-pairs': 'relation_unit_pairs'} ++ def __init__(self, relation_unit_pairs=None, **unknown_fields): ++ ''' ++ relation_unit_pairs : typing.Sequence<+T_co>[~RelationUnitPair]<~RelationUnitPair> ++ ''' ++ self.relation_unit_pairs = [RelationUnitPair.from_json(o) for o in relation_unit_pairs or []] ++ ++ ++ ++class RelationUnitSettings(Type): ++ _toSchema = {'relation': 'relation', 'settings': 'settings', 'unit': 'unit'} ++ _toPy = {'relation': 'relation', 'settings': 'settings', 'unit': 'unit'} ++ def __init__(self, relation=None, settings=None, unit=None, **unknown_fields): ++ ''' ++ relation : str ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ unit : str ++ ''' ++ self.relation = relation ++ self.settings = settings ++ self.unit = unit ++ ++ ++ ++class RelationUnits(Type): ++ _toSchema = {'relation_units': 'relation-units'} ++ _toPy = {'relation-units': 'relation_units'} ++ def __init__(self, relation_units=None, **unknown_fields): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnit]<~RelationUnit> ++ ''' ++ self.relation_units = [RelationUnit.from_json(o) for o in relation_units or []] ++ ++ ++ ++class RelationUnitsChange(Type): ++ _toSchema = {'changed': 'changed', 'departed': 'departed'} ++ _toPy = {'changed': 'changed', 'departed': 'departed'} ++ def __init__(self, changed=None, departed=None, **unknown_fields): ++ ''' ++ changed : typing.Mapping<~KT, +VT_co>[str, ~UnitSettings]<~UnitSettings> ++ departed : typing.Sequence<+T_co>[str] ++ ''' ++ self.changed = changed ++ self.departed = departed ++ ++ ++ ++class RelationUnitsSettings(Type): ++ _toSchema = {'relation_units': 'relation-units'} ++ _toPy = {'relation-units': 'relation_units'} ++ def __init__(self, relation_units=None, **unknown_fields): ++ ''' ++ relation_units : typing.Sequence<+T_co>[~RelationUnitSettings]<~RelationUnitSettings> ++ ''' ++ self.relation_units = [RelationUnitSettings.from_json(o) for o in relation_units or []] ++ ++ ++ ++class RelationUnitsWatchResult(Type): ++ _toSchema = {'changes': 'changes', 'error': 'error', 'watcher_id': 'watcher-id'} ++ _toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'} ++ def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields): ++ ''' ++ changes : RelationUnitsChange ++ error : Error ++ watcher_id : str ++ ''' ++ self.changes = RelationUnitsChange.from_json(changes) if changes else None ++ self.error = Error.from_json(error) if error else None ++ self.watcher_id = watcher_id ++ ++ ++ ++class RelationUnitsWatchResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~RelationUnitsWatchResult]<~RelationUnitsWatchResult> ++ ''' ++ self.results = [RelationUnitsWatchResult.from_json(o) for o in results or []] ++ ++ ++ ++class RemoteApplicationChange(Type): ++ _toSchema = {'application_tag': 'application-tag', 'life': 'life', 'relations': 'relations'} ++ _toPy = {'application-tag': 'application_tag', 'life': 'life', 'relations': 'relations'} ++ def __init__(self, application_tag=None, life=None, relations=None, **unknown_fields): ++ ''' ++ application_tag : str ++ life : str ++ relations : RemoteRelationsChange ++ ''' ++ self.application_tag = application_tag ++ self.life = life ++ self.relations = RemoteRelationsChange.from_json(relations) if relations else None ++ ++ ++ ++class RemoteApplicationInfo(Type): ++ _toSchema = {'application_url': 'application-url', 'description': 'description', 'endpoints': 'endpoints', 'icon_url_path': 'icon-url-path', 'model_tag': 'model-tag', 'name': 'name', 'source_model_label': 'source-model-label'} ++ _toPy = {'application-url': 'application_url', 'description': 'description', 'endpoints': 'endpoints', 'icon-url-path': 'icon_url_path', 'model-tag': 'model_tag', 'name': 'name', 'source-model-label': 'source_model_label'} ++ def __init__(self, application_url=None, description=None, endpoints=None, icon_url_path=None, model_tag=None, name=None, source_model_label=None, **unknown_fields): ++ ''' ++ application_url : str ++ description : str ++ endpoints : typing.Sequence<+T_co>[~RemoteEndpoint]<~RemoteEndpoint> ++ icon_url_path : str ++ model_tag : str ++ name : str ++ source_model_label : str ++ ''' ++ self.application_url = application_url ++ self.description = description ++ self.endpoints = [RemoteEndpoint.from_json(o) for o in endpoints or []] ++ self.icon_url_path = icon_url_path ++ self.model_tag = model_tag ++ self.name = name ++ self.source_model_label = source_model_label ++ ++ ++ ++class RemoteApplicationInfoResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : RemoteApplicationInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = RemoteApplicationInfo.from_json(result) if result else None ++ ++ ++ ++class RemoteApplicationInfoResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~RemoteApplicationInfoResult]<~RemoteApplicationInfoResult> ++ ''' ++ self.results = [RemoteApplicationInfoResult.from_json(o) for o in results or []] ++ ++ ++ ++class RemoteApplicationStatus(Type): ++ _toSchema = {'application_name': 'application-name', 'application_url': 'application-url', 'endpoints': 'endpoints', 'err': 'err', 'life': 'life', 'relations': 'relations', 'status': 'status'} ++ _toPy = {'application-name': 'application_name', 'application-url': 'application_url', 'endpoints': 'endpoints', 'err': 'err', 'life': 'life', 'relations': 'relations', 'status': 'status'} ++ def __init__(self, application_name=None, application_url=None, endpoints=None, err=None, life=None, relations=None, status=None, **unknown_fields): ++ ''' ++ application_name : str ++ application_url : str ++ endpoints : typing.Sequence<+T_co>[~RemoteEndpoint]<~RemoteEndpoint> ++ err : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ life : str ++ relations : typing.Sequence<+T_co>[str] ++ status : DetailedStatus ++ ''' ++ self.application_name = application_name ++ self.application_url = application_url ++ self.endpoints = [RemoteEndpoint.from_json(o) for o in endpoints or []] ++ self.err = err ++ self.life = life ++ self.relations = relations ++ self.status = DetailedStatus.from_json(status) if status else None ++ ++ ++ ++class RemoteApplicationWatchResult(Type): ++ _toSchema = {'change': 'change', 'error': 'error', 'id_': 'id'} ++ _toPy = {'change': 'change', 'error': 'error', 'id': 'id_'} ++ def __init__(self, change=None, error=None, id_=None, **unknown_fields): ++ ''' ++ change : RemoteApplicationChange ++ error : Error ++ id_ : str ++ ''' ++ self.change = RemoteApplicationChange.from_json(change) if change else None ++ self.error = Error.from_json(error) if error else None ++ self.id_ = id_ ++ ++ ++ ++class RemoteEndpoint(Type): ++ _toSchema = {'interface': 'interface', 'limit': 'limit', 'name': 'name', 'role': 'role', 'scope': 'scope'} ++ _toPy = {'interface': 'interface', 'limit': 'limit', 'name': 'name', 'role': 'role', 'scope': 'scope'} ++ def __init__(self, interface=None, limit=None, name=None, role=None, scope=None, **unknown_fields): ++ ''' ++ interface : str ++ limit : int ++ name : str ++ role : str ++ scope : str ++ ''' ++ self.interface = interface ++ self.limit = limit ++ self.name = name ++ self.role = role ++ self.scope = scope ++ ++ ++ ++class RemoteEntityId(Type): ++ _toSchema = {'model_uuid': 'model-uuid', 'token': 'token'} ++ _toPy = {'model-uuid': 'model_uuid', 'token': 'token'} ++ def __init__(self, model_uuid=None, token=None, **unknown_fields): ++ ''' ++ model_uuid : str ++ token : str ++ ''' ++ self.model_uuid = model_uuid ++ self.token = token ++ ++ ++ ++class RemoteRelationChange(Type): ++ _toSchema = {'changed_units': 'changed-units', 'departed_units': 'departed-units', 'id_': 'id', 'life': 'life'} ++ _toPy = {'changed-units': 'changed_units', 'departed-units': 'departed_units', 'id': 'id_', 'life': 'life'} ++ def __init__(self, changed_units=None, departed_units=None, id_=None, life=None, **unknown_fields): ++ ''' ++ changed_units : typing.Mapping<~KT, +VT_co>[str, ~RemoteRelationUnitChange]<~RemoteRelationUnitChange> ++ departed_units : typing.Sequence<+T_co>[str] ++ id_ : int ++ life : str ++ ''' ++ self.changed_units = changed_units ++ self.departed_units = departed_units ++ self.id_ = id_ ++ self.life = life ++ ++ ++ ++class RemoteRelationUnitChange(Type): ++ _toSchema = {'settings': 'settings', 'unit_id': 'unit-id'} ++ _toPy = {'settings': 'settings', 'unit-id': 'unit_id'} ++ def __init__(self, settings=None, unit_id=None, **unknown_fields): ++ ''' ++ settings : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ unit_id : RemoteEntityId ++ ''' ++ self.settings = settings ++ self.unit_id = RemoteEntityId.from_json(unit_id) if unit_id else None ++ ++ ++ ++class RemoteRelationsChange(Type): ++ _toSchema = {'changed': 'changed', 'initial': 'initial', 'removed': 'removed'} ++ _toPy = {'changed': 'changed', 'initial': 'initial', 'removed': 'removed'} ++ def __init__(self, changed=None, initial=None, removed=None, **unknown_fields): ++ ''' ++ changed : typing.Sequence<+T_co>[~RemoteRelationChange]<~RemoteRelationChange> ++ initial : bool ++ removed : typing.Sequence<+T_co>[int] ++ ''' ++ self.changed = [RemoteRelationChange.from_json(o) for o in changed or []] ++ self.initial = initial ++ self.removed = removed ++ ++ ++ ++class RemoteRelationsWatchResult(Type): ++ _toSchema = {'change': 'change', 'error': 'error', 'remoterelationswatcherid': 'RemoteRelationsWatcherId'} ++ _toPy = {'RemoteRelationsWatcherId': 'remoterelationswatcherid', 'change': 'change', 'error': 'error'} ++ def __init__(self, remoterelationswatcherid=None, change=None, error=None, **unknown_fields): ++ ''' ++ remoterelationswatcherid : str ++ change : RemoteRelationsChange ++ error : Error ++ ''' ++ self.remoterelationswatcherid = remoterelationswatcherid ++ self.change = RemoteRelationsChange.from_json(change) if change else None ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class RemoteSpace(Type): ++ _toSchema = {'cloud_type': 'cloud-type', 'name': 'name', 'provider_attributes': 'provider-attributes', 'provider_id': 'provider-id', 'subnets': 'subnets'} ++ _toPy = {'cloud-type': 'cloud_type', 'name': 'name', 'provider-attributes': 'provider_attributes', 'provider-id': 'provider_id', 'subnets': 'subnets'} ++ def __init__(self, cloud_type=None, name=None, provider_attributes=None, provider_id=None, subnets=None, **unknown_fields): ++ ''' ++ cloud_type : str ++ name : str ++ provider_attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ provider_id : str ++ subnets : typing.Sequence<+T_co>[~Subnet]<~Subnet> ++ ''' ++ self.cloud_type = cloud_type ++ self.name = name ++ self.provider_attributes = provider_attributes ++ self.provider_id = provider_id ++ self.subnets = [Subnet.from_json(o) for o in subnets or []] ++ ++ ++ ++class RemoveBlocksArgs(Type): ++ _toSchema = {'all_': 'all'} ++ _toPy = {'all': 'all_'} ++ def __init__(self, all_=None, **unknown_fields): ++ ''' ++ all_ : bool ++ ''' ++ self.all_ = all_ ++ ++ ++ ++class ResolveCharmResult(Type): ++ _toSchema = {'error': 'error', 'url': 'url'} ++ _toPy = {'error': 'error', 'url': 'url'} ++ def __init__(self, error=None, url=None, **unknown_fields): ++ ''' ++ error : str ++ url : str ++ ''' ++ self.error = error ++ self.url = url ++ ++ ++ ++class ResolveCharmResults(Type): ++ _toSchema = {'urls': 'urls'} ++ _toPy = {'urls': 'urls'} ++ def __init__(self, urls=None, **unknown_fields): ++ ''' ++ urls : typing.Sequence<+T_co>[~ResolveCharmResult]<~ResolveCharmResult> ++ ''' ++ self.urls = [ResolveCharmResult.from_json(o) for o in urls or []] ++ ++ ++ ++class ResolveCharms(Type): ++ _toSchema = {'references': 'references'} ++ _toPy = {'references': 'references'} ++ def __init__(self, references=None, **unknown_fields): ++ ''' ++ references : typing.Sequence<+T_co>[str] ++ ''' ++ self.references = references ++ ++ ++ ++class Resolved(Type): ++ _toSchema = {'retry': 'retry', 'unit_name': 'unit-name'} ++ _toPy = {'retry': 'retry', 'unit-name': 'unit_name'} ++ def __init__(self, retry=None, unit_name=None, **unknown_fields): ++ ''' ++ retry : bool ++ unit_name : str ++ ''' ++ self.retry = retry ++ self.unit_name = unit_name ++ ++ ++ ++class ResolvedModeResult(Type): ++ _toSchema = {'error': 'error', 'mode': 'mode'} ++ _toPy = {'error': 'error', 'mode': 'mode'} ++ def __init__(self, error=None, mode=None, **unknown_fields): ++ ''' ++ error : Error ++ mode : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.mode = mode ++ ++ ++ ++class ResolvedModeResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ResolvedModeResult]<~ResolvedModeResult> ++ ''' ++ self.results = [ResolvedModeResult.from_json(o) for o in results or []] ++ ++ ++ ++class Resource(Type): ++ _toSchema = {'application': 'application', 'charmresource': 'CharmResource', 'id_': 'id', 'pending_id': 'pending-id', 'timestamp': 'timestamp', 'username': 'username'} ++ _toPy = {'CharmResource': 'charmresource', 'application': 'application', 'id': 'id_', 'pending-id': 'pending_id', 'timestamp': 'timestamp', 'username': 'username'} ++ def __init__(self, charmresource=None, application=None, id_=None, pending_id=None, timestamp=None, username=None, **unknown_fields): ++ ''' ++ charmresource : CharmResource ++ application : str ++ id_ : str ++ pending_id : str ++ timestamp : str ++ username : str ++ ''' ++ self.charmresource = CharmResource.from_json(charmresource) if charmresource else None ++ self.application = application ++ self.id_ = id_ ++ self.pending_id = pending_id ++ self.timestamp = timestamp ++ self.username = username ++ ++ ++ ++class ResourceResult(Type): ++ _toSchema = {'errorresult': 'ErrorResult', 'resource': 'resource'} ++ _toPy = {'ErrorResult': 'errorresult', 'resource': 'resource'} ++ def __init__(self, errorresult=None, resource=None, **unknown_fields): ++ ''' ++ errorresult : ErrorResult ++ resource : Resource ++ ''' ++ self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None ++ self.resource = Resource.from_json(resource) if resource else None ++ ++ ++ ++class ResourcesResult(Type): ++ _toSchema = {'charm_store_resources': 'charm-store-resources', 'errorresult': 'ErrorResult', 'resources': 'resources', 'unit_resources': 'unit-resources'} ++ _toPy = {'ErrorResult': 'errorresult', 'charm-store-resources': 'charm_store_resources', 'resources': 'resources', 'unit-resources': 'unit_resources'} ++ def __init__(self, errorresult=None, charm_store_resources=None, resources=None, unit_resources=None, **unknown_fields): ++ ''' ++ errorresult : ErrorResult ++ charm_store_resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource> ++ resources : typing.Sequence<+T_co>[~Resource]<~Resource> ++ unit_resources : typing.Sequence<+T_co>[~UnitResources]<~UnitResources> ++ ''' ++ self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None ++ self.charm_store_resources = [CharmResource.from_json(o) for o in charm_store_resources or []] ++ self.resources = [Resource.from_json(o) for o in resources or []] ++ self.unit_resources = [UnitResources.from_json(o) for o in unit_resources or []] ++ ++ ++ ++class ResourcesResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ResourcesResult]<~ResourcesResult> ++ ''' ++ self.results = [ResourcesResult.from_json(o) for o in results or []] ++ ++ ++ ++class RestoreArgs(Type): ++ _toSchema = {'backup_id': 'backup-id'} ++ _toPy = {'backup-id': 'backup_id'} ++ def __init__(self, backup_id=None, **unknown_fields): ++ ''' ++ backup_id : str ++ ''' ++ self.backup_id = backup_id ++ ++ ++ ++class ResumeReplicationParams(Type): ++ _toSchema = {'members': 'members'} ++ _toPy = {'members': 'members'} ++ def __init__(self, members=None, **unknown_fields): ++ ''' ++ members : typing.Sequence<+T_co>[~Member]<~Member> ++ ''' ++ self.members = [Member.from_json(o) for o in members or []] ++ ++ ++ ++class RetryStrategy(Type): ++ _toSchema = {'jitter_retry_time': 'jitter-retry-time', 'max_retry_time': 'max-retry-time', 'min_retry_time': 'min-retry-time', 'retry_time_factor': 'retry-time-factor', 'should_retry': 'should-retry'} ++ _toPy = {'jitter-retry-time': 'jitter_retry_time', 'max-retry-time': 'max_retry_time', 'min-retry-time': 'min_retry_time', 'retry-time-factor': 'retry_time_factor', 'should-retry': 'should_retry'} ++ def __init__(self, jitter_retry_time=None, max_retry_time=None, min_retry_time=None, retry_time_factor=None, should_retry=None, **unknown_fields): ++ ''' ++ jitter_retry_time : bool ++ max_retry_time : int ++ min_retry_time : int ++ retry_time_factor : int ++ should_retry : bool ++ ''' ++ self.jitter_retry_time = jitter_retry_time ++ self.max_retry_time = max_retry_time ++ self.min_retry_time = min_retry_time ++ self.retry_time_factor = retry_time_factor ++ self.should_retry = should_retry ++ ++ ++ ++class RetryStrategyResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : RetryStrategy ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = RetryStrategy.from_json(result) if result else None ++ ++ ++ ++class RetryStrategyResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~RetryStrategyResult]<~RetryStrategyResult> ++ ''' ++ self.results = [RetryStrategyResult.from_json(o) for o in results or []] ++ ++ ++ ++class RunParams(Type): ++ _toSchema = {'applications': 'applications', 'commands': 'commands', 'machines': 'machines', 'timeout': 'timeout', 'units': 'units'} ++ _toPy = {'applications': 'applications', 'commands': 'commands', 'machines': 'machines', 'timeout': 'timeout', 'units': 'units'} ++ def __init__(self, applications=None, commands=None, machines=None, timeout=None, units=None, **unknown_fields): ++ ''' ++ applications : typing.Sequence<+T_co>[str] ++ commands : str ++ machines : typing.Sequence<+T_co>[str] ++ timeout : int ++ units : typing.Sequence<+T_co>[str] ++ ''' ++ self.applications = applications ++ self.commands = commands ++ self.machines = machines ++ self.timeout = timeout ++ self.units = units ++ ++ ++ ++class SSHAddressResult(Type): ++ _toSchema = {'address': 'address', 'error': 'error'} ++ _toPy = {'address': 'address', 'error': 'error'} ++ def __init__(self, address=None, error=None, **unknown_fields): ++ ''' ++ address : str ++ error : Error ++ ''' ++ self.address = address ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class SSHAddressResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~SSHAddressResult]<~SSHAddressResult> ++ ''' ++ self.results = [SSHAddressResult.from_json(o) for o in results or []] ++ ++ ++ ++class SSHAddressesResult(Type): ++ _toSchema = {'addresses': 'addresses', 'error': 'error'} ++ _toPy = {'addresses': 'addresses', 'error': 'error'} ++ def __init__(self, addresses=None, error=None, **unknown_fields): ++ ''' ++ addresses : typing.Sequence<+T_co>[str] ++ error : Error ++ ''' ++ self.addresses = addresses ++ self.error = Error.from_json(error) if error else None ++ ++ ++ ++class SSHAddressesResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~SSHAddressesResult]<~SSHAddressesResult> ++ ''' ++ self.results = [SSHAddressesResult.from_json(o) for o in results or []] ++ ++ ++ ++class SSHHostKeySet(Type): ++ _toSchema = {'entity_keys': 'entity-keys'} ++ _toPy = {'entity-keys': 'entity_keys'} ++ def __init__(self, entity_keys=None, **unknown_fields): ++ ''' ++ entity_keys : typing.Sequence<+T_co>[~SSHHostKeys]<~SSHHostKeys> ++ ''' ++ self.entity_keys = [SSHHostKeys.from_json(o) for o in entity_keys or []] ++ ++ ++ ++class SSHHostKeys(Type): ++ _toSchema = {'public_keys': 'public-keys', 'tag': 'tag'} ++ _toPy = {'public-keys': 'public_keys', 'tag': 'tag'} ++ def __init__(self, public_keys=None, tag=None, **unknown_fields): ++ ''' ++ public_keys : typing.Sequence<+T_co>[str] ++ tag : str ++ ''' ++ self.public_keys = public_keys ++ self.tag = tag ++ ++ ++ ++class SSHProxyResult(Type): ++ _toSchema = {'use_proxy': 'use-proxy'} ++ _toPy = {'use-proxy': 'use_proxy'} ++ def __init__(self, use_proxy=None, **unknown_fields): ++ ''' ++ use_proxy : bool ++ ''' ++ self.use_proxy = use_proxy ++ ++ ++ ++class SSHPublicKeysResult(Type): ++ _toSchema = {'error': 'error', 'public_keys': 'public-keys'} ++ _toPy = {'error': 'error', 'public-keys': 'public_keys'} ++ def __init__(self, error=None, public_keys=None, **unknown_fields): ++ ''' ++ error : Error ++ public_keys : typing.Sequence<+T_co>[str] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.public_keys = public_keys ++ ++ ++ ++class SSHPublicKeysResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~SSHPublicKeysResult]<~SSHPublicKeysResult> ++ ''' ++ self.results = [SSHPublicKeysResult.from_json(o) for o in results or []] ++ ++ ++ ++class SerializedModel(Type): ++ _toSchema = {'bytes_': 'bytes', 'charms': 'charms', 'tools': 'tools'} ++ _toPy = {'bytes': 'bytes_', 'charms': 'charms', 'tools': 'tools'} ++ def __init__(self, bytes_=None, charms=None, tools=None, **unknown_fields): ++ ''' ++ bytes_ : typing.Sequence<+T_co>[int] ++ charms : typing.Sequence<+T_co>[str] ++ tools : typing.Sequence<+T_co>[~SerializedModelTools]<~SerializedModelTools> ++ ''' ++ self.bytes_ = bytes_ ++ self.charms = charms ++ self.tools = [SerializedModelTools.from_json(o) for o in tools or []] ++ ++ ++ ++class SerializedModelResource(Type): ++ _toSchema = {'application': 'application', 'application_revision': 'application-revision', 'charmstore_revision': 'charmstore-revision', 'name': 'name', 'unit_revisions': 'unit-revisions'} ++ _toPy = {'application': 'application', 'application-revision': 'application_revision', 'charmstore-revision': 'charmstore_revision', 'name': 'name', 'unit-revisions': 'unit_revisions'} ++ def __init__(self, application=None, application_revision=None, charmstore_revision=None, name=None, unit_revisions=None, **unknown_fields): ++ ''' ++ application : str ++ application_revision : SerializedModelResourceRevision ++ charmstore_revision : SerializedModelResourceRevision ++ name : str ++ unit_revisions : typing.Mapping<~KT, +VT_co>[str, ~SerializedModelResourceRevision]<~SerializedModelResourceRevision> ++ ''' ++ self.application = application ++ self.application_revision = SerializedModelResourceRevision.from_json(application_revision) if application_revision else None ++ self.charmstore_revision = SerializedModelResourceRevision.from_json(charmstore_revision) if charmstore_revision else None ++ self.name = name ++ self.unit_revisions = unit_revisions ++ ++ ++ ++class SerializedModelResourceRevision(Type): ++ _toSchema = {'description': 'description', 'fingerprint': 'fingerprint', 'origin': 'origin', 'path': 'path', 'revision': 'revision', 'size': 'size', 'timestamp': 'timestamp', 'type_': 'type', 'username': 'username'} ++ _toPy = {'description': 'description', 'fingerprint': 'fingerprint', 'origin': 'origin', 'path': 'path', 'revision': 'revision', 'size': 'size', 'timestamp': 'timestamp', 'type': 'type_', 'username': 'username'} ++ def __init__(self, description=None, fingerprint=None, origin=None, path=None, revision=None, size=None, timestamp=None, type_=None, username=None, **unknown_fields): ++ ''' ++ description : str ++ fingerprint : str ++ origin : str ++ path : str ++ revision : int ++ size : int ++ timestamp : str ++ type_ : str ++ username : str ++ ''' ++ self.description = description ++ self.fingerprint = fingerprint ++ self.origin = origin ++ self.path = path ++ self.revision = revision ++ self.size = size ++ self.timestamp = timestamp ++ self.type_ = type_ ++ self.username = username ++ ++ ++ ++class SerializedModelTools(Type): ++ _toSchema = {'uri': 'uri', 'version': 'version'} ++ _toPy = {'uri': 'uri', 'version': 'version'} ++ def __init__(self, uri=None, version=None, **unknown_fields): ++ ''' ++ uri : str ++ version : str ++ ''' ++ self.uri = uri ++ self.version = version ++ ++ ++ ++class SetConstraints(Type): ++ _toSchema = {'application': 'application', 'constraints': 'constraints'} ++ _toPy = {'application': 'application', 'constraints': 'constraints'} ++ def __init__(self, application=None, constraints=None, **unknown_fields): ++ ''' ++ application : str ++ constraints : Value ++ ''' ++ self.application = application ++ self.constraints = Value.from_json(constraints) if constraints else None ++ ++ ++ ++class SetMachineBlockDevices(Type): ++ _toSchema = {'machine_block_devices': 'machine-block-devices'} ++ _toPy = {'machine-block-devices': 'machine_block_devices'} ++ def __init__(self, machine_block_devices=None, **unknown_fields): ++ ''' ++ machine_block_devices : typing.Sequence<+T_co>[~MachineBlockDevices]<~MachineBlockDevices> ++ ''' ++ self.machine_block_devices = [MachineBlockDevices.from_json(o) for o in machine_block_devices or []] ++ ++ ++ ++class SetMachineNetworkConfig(Type): ++ _toSchema = {'config': 'config', 'tag': 'tag'} ++ _toPy = {'config': 'config', 'tag': 'tag'} ++ def __init__(self, config=None, tag=None, **unknown_fields): ++ ''' ++ config : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig> ++ tag : str ++ ''' ++ self.config = [NetworkConfig.from_json(o) for o in config or []] ++ self.tag = tag ++ ++ ++ ++class SetMachinesAddresses(Type): ++ _toSchema = {'machine_addresses': 'machine-addresses'} ++ _toPy = {'machine-addresses': 'machine_addresses'} ++ def __init__(self, machine_addresses=None, **unknown_fields): ++ ''' ++ machine_addresses : typing.Sequence<+T_co>[~MachineAddresses]<~MachineAddresses> ++ ''' ++ self.machine_addresses = [MachineAddresses.from_json(o) for o in machine_addresses or []] ++ ++ ++ ++class SetMigrationPhaseArgs(Type): ++ _toSchema = {'phase': 'phase'} ++ _toPy = {'phase': 'phase'} ++ def __init__(self, phase=None, **unknown_fields): ++ ''' ++ phase : str ++ ''' ++ self.phase = phase ++ ++ ++ ++class SetMigrationStatusMessageArgs(Type): ++ _toSchema = {'message': 'message'} ++ _toPy = {'message': 'message'} ++ def __init__(self, message=None, **unknown_fields): ++ ''' ++ message : str ++ ''' ++ self.message = message ++ ++ ++ ++class SetModelAgentVersion(Type): ++ _toSchema = {'version': 'version'} ++ _toPy = {'version': 'version'} ++ def __init__(self, version=None, **unknown_fields): ++ ''' ++ version : Number ++ ''' ++ self.version = Number.from_json(version) if version else None ++ ++ ++ ++class SetModelDefaults(Type): ++ _toSchema = {'config': 'config'} ++ _toPy = {'config': 'config'} ++ def __init__(self, config=None, **unknown_fields): ++ ''' ++ config : typing.Sequence<+T_co>[~ModelDefaultValues]<~ModelDefaultValues> ++ ''' ++ self.config = [ModelDefaultValues.from_json(o) for o in config or []] ++ ++ ++ ++class SetPayloadStatusArg(Type): ++ _toSchema = {'entity': 'Entity', 'status': 'status'} ++ _toPy = {'Entity': 'entity', 'status': 'status'} ++ def __init__(self, entity=None, status=None, **unknown_fields): ++ ''' ++ entity : Entity ++ status : str ++ ''' ++ self.entity = Entity.from_json(entity) if entity else None ++ self.status = status ++ ++ ++ ++class SetPayloadStatusArgs(Type): ++ _toSchema = {'args': 'args'} ++ _toPy = {'args': 'args'} ++ def __init__(self, args=None, **unknown_fields): ++ ''' ++ args : typing.Sequence<+T_co>[~SetPayloadStatusArg]<~SetPayloadStatusArg> ++ ''' ++ self.args = [SetPayloadStatusArg.from_json(o) for o in args or []] ++ ++ ++ ++class SetStatus(Type): ++ _toSchema = {'entities': 'entities'} ++ _toPy = {'entities': 'entities'} ++ def __init__(self, entities=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~EntityStatusArgs]<~EntityStatusArgs> ++ ''' ++ self.entities = [EntityStatusArgs.from_json(o) for o in entities or []] ++ ++ ++ ++class SetStatusArg(Type): ++ _toSchema = {'entity': 'Entity', 'status': 'status'} ++ _toPy = {'Entity': 'entity', 'status': 'status'} ++ def __init__(self, entity=None, status=None, **unknown_fields): ++ ''' ++ entity : Entity ++ status : str ++ ''' ++ self.entity = Entity.from_json(entity) if entity else None ++ self.status = status ++ ++ ++ ++class SetStatusArgs(Type): ++ _toSchema = {'args': 'args'} ++ _toPy = {'args': 'args'} ++ def __init__(self, args=None, **unknown_fields): ++ ''' ++ args : typing.Sequence<+T_co>[~SetStatusArg]<~SetStatusArg> ++ ''' ++ self.args = [SetStatusArg.from_json(o) for o in args or []] ++ ++ ++ ++class Settings(Type): ++ _toSchema = {'ftp': 'Ftp', 'http': 'Http', 'https': 'Https', 'noproxy': 'NoProxy'} ++ _toPy = {'Ftp': 'ftp', 'Http': 'http', 'Https': 'https', 'NoProxy': 'noproxy'} ++ def __init__(self, ftp=None, http=None, https=None, noproxy=None, **unknown_fields): ++ ''' ++ ftp : str ++ http : str ++ https : str ++ noproxy : str ++ ''' ++ self.ftp = ftp ++ self.http = http ++ self.https = https ++ self.noproxy = noproxy ++ ++ ++ ++class SettingsResult(Type): ++ _toSchema = {'error': 'error', 'settings': 'settings'} ++ _toPy = {'error': 'error', 'settings': 'settings'} ++ def __init__(self, error=None, settings=None, **unknown_fields): ++ ''' ++ error : Error ++ settings : typing.Mapping<~KT, +VT_co>[str, str] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.settings = settings ++ ++ ++ ++class SettingsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~SettingsResult]<~SettingsResult> ++ ''' ++ self.results = [SettingsResult.from_json(o) for o in results or []] ++ ++ ++ ++class SingularClaim(Type): ++ _toSchema = {'controller_tag': 'controller-tag', 'duration': 'duration', 'model_tag': 'model-tag'} ++ _toPy = {'controller-tag': 'controller_tag', 'duration': 'duration', 'model-tag': 'model_tag'} ++ def __init__(self, controller_tag=None, duration=None, model_tag=None, **unknown_fields): ++ ''' ++ controller_tag : str ++ duration : int ++ model_tag : str ++ ''' ++ self.controller_tag = controller_tag ++ self.duration = duration ++ self.model_tag = model_tag ++ ++ ++ ++class SingularClaims(Type): ++ _toSchema = {'claims': 'claims'} ++ _toPy = {'claims': 'claims'} ++ def __init__(self, claims=None, **unknown_fields): ++ ''' ++ claims : typing.Sequence<+T_co>[~SingularClaim]<~SingularClaim> ++ ''' ++ self.claims = [SingularClaim.from_json(o) for o in claims or []] ++ ++ ++ ++class Space(Type): ++ _toSchema = {'error': 'error', 'name': 'name', 'subnets': 'subnets'} ++ _toPy = {'error': 'error', 'name': 'name', 'subnets': 'subnets'} ++ def __init__(self, error=None, name=None, subnets=None, **unknown_fields): ++ ''' ++ error : Error ++ name : str ++ subnets : typing.Sequence<+T_co>[~Subnet]<~Subnet> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.name = name ++ self.subnets = [Subnet.from_json(o) for o in subnets or []] ++ ++ ++ ++class SpaceResult(Type): ++ _toSchema = {'error': 'error', 'tag': 'tag'} ++ _toPy = {'error': 'error', 'tag': 'tag'} ++ def __init__(self, error=None, tag=None, **unknown_fields): ++ ''' ++ error : Error ++ tag : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.tag = tag ++ ++ ++ ++class SpaceResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~SpaceResult]<~SpaceResult> ++ ''' ++ self.results = [SpaceResult.from_json(o) for o in results or []] ++ ++ ++ ++class StateServingInfo(Type): ++ _toSchema = {'api_port': 'api-port', 'ca_private_key': 'ca-private-key', 'cert': 'cert', 'private_key': 'private-key', 'shared_secret': 'shared-secret', 'state_port': 'state-port', 'system_identity': 'system-identity'} ++ _toPy = {'api-port': 'api_port', 'ca-private-key': 'ca_private_key', 'cert': 'cert', 'private-key': 'private_key', 'shared-secret': 'shared_secret', 'state-port': 'state_port', 'system-identity': 'system_identity'} ++ def __init__(self, api_port=None, ca_private_key=None, cert=None, private_key=None, shared_secret=None, state_port=None, system_identity=None, **unknown_fields): ++ ''' ++ api_port : int ++ ca_private_key : str ++ cert : str ++ private_key : str ++ shared_secret : str ++ state_port : int ++ system_identity : str ++ ''' ++ self.api_port = api_port ++ self.ca_private_key = ca_private_key ++ self.cert = cert ++ self.private_key = private_key ++ self.shared_secret = shared_secret ++ self.state_port = state_port ++ self.system_identity = system_identity ++ ++ ++ ++class StatusHistoryFilter(Type): ++ _toSchema = {'date': 'date', 'delta': 'delta', 'size': 'size'} ++ _toPy = {'date': 'date', 'delta': 'delta', 'size': 'size'} ++ def __init__(self, date=None, delta=None, size=None, **unknown_fields): ++ ''' ++ date : str ++ delta : int ++ size : int ++ ''' ++ self.date = date ++ self.delta = delta ++ self.size = size ++ ++ ++ ++class StatusHistoryPruneArgs(Type): ++ _toSchema = {'max_history_mb': 'max-history-mb', 'max_history_time': 'max-history-time'} ++ _toPy = {'max-history-mb': 'max_history_mb', 'max-history-time': 'max_history_time'} ++ def __init__(self, max_history_mb=None, max_history_time=None, **unknown_fields): ++ ''' ++ max_history_mb : int ++ max_history_time : int ++ ''' ++ self.max_history_mb = max_history_mb ++ self.max_history_time = max_history_time ++ ++ ++ ++class StatusHistoryRequest(Type): ++ _toSchema = {'filter_': 'filter', 'historykind': 'historyKind', 'size': 'size', 'tag': 'tag'} ++ _toPy = {'filter': 'filter_', 'historyKind': 'historykind', 'size': 'size', 'tag': 'tag'} ++ def __init__(self, filter_=None, historykind=None, size=None, tag=None, **unknown_fields): ++ ''' ++ filter_ : StatusHistoryFilter ++ historykind : str ++ size : int ++ tag : str ++ ''' ++ self.filter_ = StatusHistoryFilter.from_json(filter_) if filter_ else None ++ self.historykind = historykind ++ self.size = size ++ self.tag = tag ++ ++ ++ ++class StatusHistoryRequests(Type): ++ _toSchema = {'requests': 'requests'} ++ _toPy = {'requests': 'requests'} ++ def __init__(self, requests=None, **unknown_fields): ++ ''' ++ requests : typing.Sequence<+T_co>[~StatusHistoryRequest]<~StatusHistoryRequest> ++ ''' ++ self.requests = [StatusHistoryRequest.from_json(o) for o in requests or []] ++ ++ ++ ++class StatusHistoryResult(Type): ++ _toSchema = {'error': 'error', 'history': 'history'} ++ _toPy = {'error': 'error', 'history': 'history'} ++ def __init__(self, error=None, history=None, **unknown_fields): ++ ''' ++ error : Error ++ history : History ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.history = History.from_json(history) if history else None ++ ++ ++ ++class StatusHistoryResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StatusHistoryResult]<~StatusHistoryResult> ++ ''' ++ self.results = [StatusHistoryResult.from_json(o) for o in results or []] ++ ++ ++ ++class StatusParams(Type): ++ _toSchema = {'patterns': 'patterns'} ++ _toPy = {'patterns': 'patterns'} ++ def __init__(self, patterns=None, **unknown_fields): ++ ''' ++ patterns : typing.Sequence<+T_co>[str] ++ ''' ++ self.patterns = patterns ++ ++ ++ ++class StatusResult(Type): ++ _toSchema = {'data': 'data', 'error': 'error', 'id_': 'id', 'info': 'info', 'life': 'life', 'since': 'since', 'status': 'status'} ++ _toPy = {'data': 'data', 'error': 'error', 'id': 'id_', 'info': 'info', 'life': 'life', 'since': 'since', 'status': 'status'} ++ def __init__(self, data=None, error=None, id_=None, info=None, life=None, since=None, status=None, **unknown_fields): ++ ''' ++ data : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ error : Error ++ id_ : str ++ info : str ++ life : str ++ since : str ++ status : str ++ ''' ++ self.data = data ++ self.error = Error.from_json(error) if error else None ++ self.id_ = id_ ++ self.info = info ++ self.life = life ++ self.since = since ++ self.status = status ++ ++ ++ ++class StatusResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StatusResult]<~StatusResult> ++ ''' ++ self.results = [StatusResult.from_json(o) for o in results or []] ++ ++ ++ ++class StorageAddParams(Type): ++ _toSchema = {'name': 'name', 'storage': 'storage', 'unit': 'unit'} ++ _toPy = {'name': 'name', 'storage': 'storage', 'unit': 'unit'} ++ def __init__(self, name=None, storage=None, unit=None, **unknown_fields): ++ ''' ++ name : str ++ storage : StorageConstraints ++ unit : str ++ ''' ++ self.name = name ++ self.storage = StorageConstraints.from_json(storage) if storage else None ++ self.unit = unit ++ ++ ++ ++class StorageAttachment(Type): ++ _toSchema = {'kind': 'kind', 'life': 'life', 'location': 'location', 'owner_tag': 'owner-tag', 'storage_tag': 'storage-tag', 'unit_tag': 'unit-tag'} ++ _toPy = {'kind': 'kind', 'life': 'life', 'location': 'location', 'owner-tag': 'owner_tag', 'storage-tag': 'storage_tag', 'unit-tag': 'unit_tag'} ++ def __init__(self, kind=None, life=None, location=None, owner_tag=None, storage_tag=None, unit_tag=None, **unknown_fields): ++ ''' ++ kind : int ++ life : str ++ location : str ++ owner_tag : str ++ storage_tag : str ++ unit_tag : str ++ ''' ++ self.kind = kind ++ self.life = life ++ self.location = location ++ self.owner_tag = owner_tag ++ self.storage_tag = storage_tag ++ self.unit_tag = unit_tag ++ ++ ++ ++class StorageAttachmentDetails(Type): ++ _toSchema = {'location': 'location', 'machine_tag': 'machine-tag', 'storage_tag': 'storage-tag', 'unit_tag': 'unit-tag'} ++ _toPy = {'location': 'location', 'machine-tag': 'machine_tag', 'storage-tag': 'storage_tag', 'unit-tag': 'unit_tag'} ++ def __init__(self, location=None, machine_tag=None, storage_tag=None, unit_tag=None, **unknown_fields): ++ ''' ++ location : str ++ machine_tag : str ++ storage_tag : str ++ unit_tag : str ++ ''' ++ self.location = location ++ self.machine_tag = machine_tag ++ self.storage_tag = storage_tag ++ self.unit_tag = unit_tag ++ ++ ++ ++class StorageAttachmentId(Type): ++ _toSchema = {'storage_tag': 'storage-tag', 'unit_tag': 'unit-tag'} ++ _toPy = {'storage-tag': 'storage_tag', 'unit-tag': 'unit_tag'} ++ def __init__(self, storage_tag=None, unit_tag=None, **unknown_fields): ++ ''' ++ storage_tag : str ++ unit_tag : str ++ ''' ++ self.storage_tag = storage_tag ++ self.unit_tag = unit_tag ++ ++ ++ ++class StorageAttachmentIds(Type): ++ _toSchema = {'ids': 'ids'} ++ _toPy = {'ids': 'ids'} ++ def __init__(self, ids=None, **unknown_fields): ++ ''' ++ ids : typing.Sequence<+T_co>[~StorageAttachmentId]<~StorageAttachmentId> ++ ''' ++ self.ids = [StorageAttachmentId.from_json(o) for o in ids or []] ++ ++ ++ ++class StorageAttachmentIdsResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : StorageAttachmentIds ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = StorageAttachmentIds.from_json(result) if result else None ++ ++ ++ ++class StorageAttachmentIdsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StorageAttachmentIdsResult]<~StorageAttachmentIdsResult> ++ ''' ++ self.results = [StorageAttachmentIdsResult.from_json(o) for o in results or []] ++ ++ ++ ++class StorageAttachmentResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : StorageAttachment ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = StorageAttachment.from_json(result) if result else None ++ ++ ++ ++class StorageAttachmentResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StorageAttachmentResult]<~StorageAttachmentResult> ++ ''' ++ self.results = [StorageAttachmentResult.from_json(o) for o in results or []] ++ ++ ++ ++class StorageConstraints(Type): ++ _toSchema = {'count': 'count', 'pool': 'pool', 'size': 'size'} ++ _toPy = {'count': 'count', 'pool': 'pool', 'size': 'size'} ++ def __init__(self, count=None, pool=None, size=None, **unknown_fields): ++ ''' ++ count : int ++ pool : str ++ size : int ++ ''' ++ self.count = count ++ self.pool = pool ++ self.size = size ++ ++ ++ ++class StorageDetails(Type): ++ _toSchema = {'attachments': 'attachments', 'kind': 'kind', 'owner_tag': 'owner-tag', 'persistent': 'persistent', 'status': 'status', 'storage_tag': 'storage-tag'} ++ _toPy = {'attachments': 'attachments', 'kind': 'kind', 'owner-tag': 'owner_tag', 'persistent': 'persistent', 'status': 'status', 'storage-tag': 'storage_tag'} ++ def __init__(self, attachments=None, kind=None, owner_tag=None, persistent=None, status=None, storage_tag=None, **unknown_fields): ++ ''' ++ attachments : typing.Mapping<~KT, +VT_co>[str, ~StorageAttachmentDetails]<~StorageAttachmentDetails> ++ kind : int ++ owner_tag : str ++ persistent : bool ++ status : EntityStatus ++ storage_tag : str ++ ''' ++ self.attachments = attachments ++ self.kind = kind ++ self.owner_tag = owner_tag ++ self.persistent = persistent ++ self.status = EntityStatus.from_json(status) if status else None ++ self.storage_tag = storage_tag ++ ++ ++ ++class StorageDetailsListResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : typing.Sequence<+T_co>[~StorageDetails]<~StorageDetails> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = [StorageDetails.from_json(o) for o in result or []] ++ ++ ++ ++class StorageDetailsListResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StorageDetailsListResult]<~StorageDetailsListResult> ++ ''' ++ self.results = [StorageDetailsListResult.from_json(o) for o in results or []] ++ ++ ++ ++class StorageDetailsResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : StorageDetails ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = StorageDetails.from_json(result) if result else None ++ ++ ++ ++class StorageDetailsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StorageDetailsResult]<~StorageDetailsResult> ++ ''' ++ self.results = [StorageDetailsResult.from_json(o) for o in results or []] ++ ++ ++ ++class StorageFilter(Type): ++ _toSchema = {} ++ _toPy = {} ++ def __init__(self, **unknown_fields): ++ ''' ++ ++ ''' ++ pass ++ ++ ++ ++class StorageFilters(Type): ++ _toSchema = {'filters': 'filters'} ++ _toPy = {'filters': 'filters'} ++ def __init__(self, filters=None, **unknown_fields): ++ ''' ++ filters : typing.Sequence<+T_co>[~StorageFilter]<~StorageFilter> ++ ''' ++ self.filters = [StorageFilter.from_json(o) for o in filters or []] ++ ++ ++ ++class StoragePool(Type): ++ _toSchema = {'attrs': 'attrs', 'name': 'name', 'provider': 'provider'} ++ _toPy = {'attrs': 'attrs', 'name': 'name', 'provider': 'provider'} ++ def __init__(self, attrs=None, name=None, provider=None, **unknown_fields): ++ ''' ++ attrs : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ name : str ++ provider : str ++ ''' ++ self.attrs = attrs ++ self.name = name ++ self.provider = provider ++ ++ ++ ++class StoragePoolFilter(Type): ++ _toSchema = {'names': 'names', 'providers': 'providers'} ++ _toPy = {'names': 'names', 'providers': 'providers'} ++ def __init__(self, names=None, providers=None, **unknown_fields): ++ ''' ++ names : typing.Sequence<+T_co>[str] ++ providers : typing.Sequence<+T_co>[str] ++ ''' ++ self.names = names ++ self.providers = providers ++ ++ ++ ++class StoragePoolFilters(Type): ++ _toSchema = {'filters': 'filters'} ++ _toPy = {'filters': 'filters'} ++ def __init__(self, filters=None, **unknown_fields): ++ ''' ++ filters : typing.Sequence<+T_co>[~StoragePoolFilter]<~StoragePoolFilter> ++ ''' ++ self.filters = [StoragePoolFilter.from_json(o) for o in filters or []] ++ ++ ++ ++class StoragePoolsResult(Type): ++ _toSchema = {'error': 'error', 'storage_pools': 'storage-pools'} ++ _toPy = {'error': 'error', 'storage-pools': 'storage_pools'} ++ def __init__(self, error=None, storage_pools=None, **unknown_fields): ++ ''' ++ error : Error ++ storage_pools : typing.Sequence<+T_co>[~StoragePool]<~StoragePool> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.storage_pools = [StoragePool.from_json(o) for o in storage_pools or []] ++ ++ ++ ++class StoragePoolsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StoragePoolsResult]<~StoragePoolsResult> ++ ''' ++ self.results = [StoragePoolsResult.from_json(o) for o in results or []] ++ ++ ++ ++class StoragesAddParams(Type): ++ _toSchema = {'storages': 'storages'} ++ _toPy = {'storages': 'storages'} ++ def __init__(self, storages=None, **unknown_fields): ++ ''' ++ storages : typing.Sequence<+T_co>[~StorageAddParams]<~StorageAddParams> ++ ''' ++ self.storages = [StorageAddParams.from_json(o) for o in storages or []] ++ ++ ++ ++class StringBoolResult(Type): ++ _toSchema = {'error': 'error', 'ok': 'ok', 'result': 'result'} ++ _toPy = {'error': 'error', 'ok': 'ok', 'result': 'result'} ++ def __init__(self, error=None, ok=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ ok : bool ++ result : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.ok = ok ++ self.result = result ++ ++ ++ ++class StringBoolResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StringBoolResult]<~StringBoolResult> ++ ''' ++ self.results = [StringBoolResult.from_json(o) for o in results or []] ++ ++ ++ ++class StringResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : str ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = result ++ ++ ++ ++class StringResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StringResult]<~StringResult> ++ ''' ++ self.results = [StringResult.from_json(o) for o in results or []] ++ ++ ++ ++class StringsResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : typing.Sequence<+T_co>[str] ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = result ++ ++ ++ ++class StringsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StringsResult]<~StringsResult> ++ ''' ++ self.results = [StringsResult.from_json(o) for o in results or []] ++ ++ ++ ++class StringsWatchResult(Type): ++ _toSchema = {'changes': 'changes', 'error': 'error', 'watcher_id': 'watcher-id'} ++ _toPy = {'changes': 'changes', 'error': 'error', 'watcher-id': 'watcher_id'} ++ def __init__(self, changes=None, error=None, watcher_id=None, **unknown_fields): ++ ''' ++ changes : typing.Sequence<+T_co>[str] ++ error : Error ++ watcher_id : str ++ ''' ++ self.changes = changes ++ self.error = Error.from_json(error) if error else None ++ self.watcher_id = watcher_id ++ ++ ++ ++class StringsWatchResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~StringsWatchResult]<~StringsWatchResult> ++ ''' ++ self.results = [StringsWatchResult.from_json(o) for o in results or []] ++ ++ ++ ++class Subnet(Type): ++ _toSchema = {'cidr': 'cidr', 'life': 'life', 'provider_id': 'provider-id', 'space_tag': 'space-tag', 'status': 'status', 'vlan_tag': 'vlan-tag', 'zones': 'zones'} ++ _toPy = {'cidr': 'cidr', 'life': 'life', 'provider-id': 'provider_id', 'space-tag': 'space_tag', 'status': 'status', 'vlan-tag': 'vlan_tag', 'zones': 'zones'} ++ def __init__(self, cidr=None, life=None, provider_id=None, space_tag=None, status=None, vlan_tag=None, zones=None, **unknown_fields): ++ ''' ++ cidr : str ++ life : str ++ provider_id : str ++ space_tag : str ++ status : str ++ vlan_tag : int ++ zones : typing.Sequence<+T_co>[str] ++ ''' ++ self.cidr = cidr ++ self.life = life ++ self.provider_id = provider_id ++ self.space_tag = space_tag ++ self.status = status ++ self.vlan_tag = vlan_tag ++ self.zones = zones ++ ++ ++ ++class SubnetsFilters(Type): ++ _toSchema = {'space_tag': 'space-tag', 'zone': 'zone'} ++ _toPy = {'space-tag': 'space_tag', 'zone': 'zone'} ++ def __init__(self, space_tag=None, zone=None, **unknown_fields): ++ ''' ++ space_tag : str ++ zone : str ++ ''' ++ self.space_tag = space_tag ++ self.zone = zone ++ ++ ++ ++class Tools(Type): ++ _toSchema = {'sha256': 'sha256', 'size': 'size', 'url': 'url', 'version': 'version'} ++ _toPy = {'sha256': 'sha256', 'size': 'size', 'url': 'url', 'version': 'version'} ++ def __init__(self, sha256=None, size=None, url=None, version=None, **unknown_fields): ++ ''' ++ sha256 : str ++ size : int ++ url : str ++ version : Binary ++ ''' ++ self.sha256 = sha256 ++ self.size = size ++ self.url = url ++ self.version = Binary.from_json(version) if version else None ++ ++ ++ ++class ToolsResult(Type): ++ _toSchema = {'disable_ssl_hostname_verification': 'disable-ssl-hostname-verification', 'error': 'error', 'tools': 'tools'} ++ _toPy = {'disable-ssl-hostname-verification': 'disable_ssl_hostname_verification', 'error': 'error', 'tools': 'tools'} ++ def __init__(self, disable_ssl_hostname_verification=None, error=None, tools=None, **unknown_fields): ++ ''' ++ disable_ssl_hostname_verification : bool ++ error : Error ++ tools : typing.Sequence<+T_co>[~Tools]<~Tools> ++ ''' ++ self.disable_ssl_hostname_verification = disable_ssl_hostname_verification ++ self.error = Error.from_json(error) if error else None ++ self.tools = [Tools.from_json(o) for o in tools or []] ++ ++ ++ ++class ToolsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ToolsResult]<~ToolsResult> ++ ''' ++ self.results = [ToolsResult.from_json(o) for o in results or []] ++ ++ ++ ++class TrackArgs(Type): ++ _toSchema = {'payloads': 'payloads'} ++ _toPy = {'payloads': 'payloads'} ++ def __init__(self, payloads=None, **unknown_fields): ++ ''' ++ payloads : typing.Sequence<+T_co>[~Payload]<~Payload> ++ ''' ++ self.payloads = [Payload.from_json(o) for o in payloads or []] ++ ++ ++ ++class TrackPayloadArgs(Type): ++ _toSchema = {'payloads': 'payloads'} ++ _toPy = {'payloads': 'payloads'} ++ def __init__(self, payloads=None, **unknown_fields): ++ ''' ++ payloads : typing.Sequence<+T_co>[~Payload]<~Payload> ++ ''' ++ self.payloads = [Payload.from_json(o) for o in payloads or []] ++ ++ ++ ++class UndertakerModelInfo(Type): ++ _toSchema = {'global_name': 'global-name', 'is_system': 'is-system', 'life': 'life', 'name': 'name', 'uuid': 'uuid'} ++ _toPy = {'global-name': 'global_name', 'is-system': 'is_system', 'life': 'life', 'name': 'name', 'uuid': 'uuid'} ++ def __init__(self, global_name=None, is_system=None, life=None, name=None, uuid=None, **unknown_fields): ++ ''' ++ global_name : str ++ is_system : bool ++ life : str ++ name : str ++ uuid : str ++ ''' ++ self.global_name = global_name ++ self.is_system = is_system ++ self.life = life ++ self.name = name ++ self.uuid = uuid ++ ++ ++ ++class UndertakerModelInfoResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : UndertakerModelInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = UndertakerModelInfo.from_json(result) if result else None ++ ++ ++ ++class UnitNetworkConfig(Type): ++ _toSchema = {'binding_name': 'binding-name', 'unit_tag': 'unit-tag'} ++ _toPy = {'binding-name': 'binding_name', 'unit-tag': 'unit_tag'} ++ def __init__(self, binding_name=None, unit_tag=None, **unknown_fields): ++ ''' ++ binding_name : str ++ unit_tag : str ++ ''' ++ self.binding_name = binding_name ++ self.unit_tag = unit_tag ++ ++ ++ ++class UnitNetworkConfigResult(Type): ++ _toSchema = {'error': 'error', 'info': 'info'} ++ _toPy = {'error': 'error', 'info': 'info'} ++ def __init__(self, error=None, info=None, **unknown_fields): ++ ''' ++ error : Error ++ info : typing.Sequence<+T_co>[~NetworkConfig]<~NetworkConfig> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.info = [NetworkConfig.from_json(o) for o in info or []] ++ ++ ++ ++class UnitNetworkConfigResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~UnitNetworkConfigResult]<~UnitNetworkConfigResult> ++ ''' ++ self.results = [UnitNetworkConfigResult.from_json(o) for o in results or []] ++ ++ ++ ++class UnitResourceResult(Type): ++ _toSchema = {'errorresult': 'ErrorResult', 'resource': 'resource'} ++ _toPy = {'ErrorResult': 'errorresult', 'resource': 'resource'} ++ def __init__(self, errorresult=None, resource=None, **unknown_fields): ++ ''' ++ errorresult : ErrorResult ++ resource : Resource ++ ''' ++ self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None ++ self.resource = Resource.from_json(resource) if resource else None ++ ++ ++ ++class UnitResources(Type): ++ _toSchema = {'download_progress': 'download-progress', 'entity': 'Entity', 'resources': 'resources'} ++ _toPy = {'Entity': 'entity', 'download-progress': 'download_progress', 'resources': 'resources'} ++ def __init__(self, entity=None, download_progress=None, resources=None, **unknown_fields): ++ ''' ++ entity : Entity ++ download_progress : typing.Mapping<~KT, +VT_co>[str, int] ++ resources : typing.Sequence<+T_co>[~Resource]<~Resource> ++ ''' ++ self.entity = Entity.from_json(entity) if entity else None ++ self.download_progress = download_progress ++ self.resources = [Resource.from_json(o) for o in resources or []] ++ ++ ++ ++class UnitResourcesResult(Type): ++ _toSchema = {'errorresult': 'ErrorResult', 'resources': 'resources'} ++ _toPy = {'ErrorResult': 'errorresult', 'resources': 'resources'} ++ def __init__(self, errorresult=None, resources=None, **unknown_fields): ++ ''' ++ errorresult : ErrorResult ++ resources : typing.Sequence<+T_co>[~UnitResourceResult]<~UnitResourceResult> ++ ''' ++ self.errorresult = ErrorResult.from_json(errorresult) if errorresult else None ++ self.resources = [UnitResourceResult.from_json(o) for o in resources or []] ++ ++ ++ ++class UnitSettings(Type): ++ _toSchema = {'version': 'version'} ++ _toPy = {'version': 'version'} ++ def __init__(self, version=None, **unknown_fields): ++ ''' ++ version : int ++ ''' ++ self.version = version ++ ++ ++ ++class UnitStatus(Type): ++ _toSchema = {'agent_status': 'agent-status', 'charm': 'charm', 'leader': 'leader', 'machine': 'machine', 'opened_ports': 'opened-ports', 'public_address': 'public-address', 'subordinates': 'subordinates', 'workload_status': 'workload-status', 'workload_version': 'workload-version'} ++ _toPy = {'agent-status': 'agent_status', 'charm': 'charm', 'leader': 'leader', 'machine': 'machine', 'opened-ports': 'opened_ports', 'public-address': 'public_address', 'subordinates': 'subordinates', 'workload-status': 'workload_status', 'workload-version': 'workload_version'} ++ def __init__(self, agent_status=None, charm=None, leader=None, machine=None, opened_ports=None, public_address=None, subordinates=None, workload_status=None, workload_version=None, **unknown_fields): ++ ''' ++ agent_status : DetailedStatus ++ charm : str ++ leader : bool ++ machine : str ++ opened_ports : typing.Sequence<+T_co>[str] ++ public_address : str ++ subordinates : typing.Mapping<~KT, +VT_co>[str, ~UnitStatus]<~UnitStatus> ++ workload_status : DetailedStatus ++ workload_version : str ++ ''' ++ self.agent_status = DetailedStatus.from_json(agent_status) if agent_status else None ++ self.charm = charm ++ self.leader = leader ++ self.machine = machine ++ self.opened_ports = opened_ports ++ self.public_address = public_address ++ self.subordinates = subordinates ++ self.workload_status = DetailedStatus.from_json(workload_status) if workload_status else None ++ self.workload_version = workload_version ++ ++ ++ ++class UnitsNetworkConfig(Type): ++ _toSchema = {'args': 'args'} ++ _toPy = {'args': 'args'} ++ def __init__(self, args=None, **unknown_fields): ++ ''' ++ args : typing.Sequence<+T_co>[~UnitNetworkConfig]<~UnitNetworkConfig> ++ ''' ++ self.args = [UnitNetworkConfig.from_json(o) for o in args or []] ++ ++ ++ ++class UnsetModelDefaults(Type): ++ _toSchema = {'keys': 'keys'} ++ _toPy = {'keys': 'keys'} ++ def __init__(self, keys=None, **unknown_fields): ++ ''' ++ keys : typing.Sequence<+T_co>[~ModelUnsetKeys]<~ModelUnsetKeys> ++ ''' ++ self.keys = [ModelUnsetKeys.from_json(o) for o in keys or []] ++ ++ ++ ++class UpdateBehavior(Type): ++ _toSchema = {'enable_os_refresh_update': 'enable-os-refresh-update', 'enable_os_upgrade': 'enable-os-upgrade'} ++ _toPy = {'enable-os-refresh-update': 'enable_os_refresh_update', 'enable-os-upgrade': 'enable_os_upgrade'} ++ def __init__(self, enable_os_refresh_update=None, enable_os_upgrade=None, **unknown_fields): ++ ''' ++ enable_os_refresh_update : bool ++ enable_os_upgrade : bool ++ ''' ++ self.enable_os_refresh_update = enable_os_refresh_update ++ self.enable_os_upgrade = enable_os_upgrade ++ ++ ++ ++class UpdateCloudCredential(Type): ++ _toSchema = {'credential': 'credential', 'tag': 'tag'} ++ _toPy = {'credential': 'credential', 'tag': 'tag'} ++ def __init__(self, credential=None, tag=None, **unknown_fields): ++ ''' ++ credential : CloudCredential ++ tag : str ++ ''' ++ self.credential = CloudCredential.from_json(credential) if credential else None ++ self.tag = tag ++ ++ ++ ++class UpdateCloudCredentials(Type): ++ _toSchema = {'credentials': 'credentials'} ++ _toPy = {'credentials': 'credentials'} ++ def __init__(self, credentials=None, **unknown_fields): ++ ''' ++ credentials : typing.Sequence<+T_co>[~UpdateCloudCredential]<~UpdateCloudCredential> ++ ''' ++ self.credentials = [UpdateCloudCredential.from_json(o) for o in credentials or []] ++ ++ ++ ++class UpgradeMongoParams(Type): ++ _toSchema = {'target': 'target'} ++ _toPy = {'target': 'target'} ++ def __init__(self, target=None, **unknown_fields): ++ ''' ++ target : MongoVersion ++ ''' ++ self.target = MongoVersion.from_json(target) if target else None ++ ++ ++ ++class UserAccess(Type): ++ _toSchema = {'access': 'access', 'user_tag': 'user-tag'} ++ _toPy = {'access': 'access', 'user-tag': 'user_tag'} ++ def __init__(self, access=None, user_tag=None, **unknown_fields): ++ ''' ++ access : str ++ user_tag : str ++ ''' ++ self.access = access ++ self.user_tag = user_tag ++ ++ ++ ++class UserAccessResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : UserAccess ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = UserAccess.from_json(result) if result else None ++ ++ ++ ++class UserAccessResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~UserAccessResult]<~UserAccessResult> ++ ''' ++ self.results = [UserAccessResult.from_json(o) for o in results or []] ++ ++ ++ ++class UserCloud(Type): ++ _toSchema = {'cloud_tag': 'cloud-tag', 'user_tag': 'user-tag'} ++ _toPy = {'cloud-tag': 'cloud_tag', 'user-tag': 'user_tag'} ++ def __init__(self, cloud_tag=None, user_tag=None, **unknown_fields): ++ ''' ++ cloud_tag : str ++ user_tag : str ++ ''' ++ self.cloud_tag = cloud_tag ++ self.user_tag = user_tag ++ ++ ++ ++class UserClouds(Type): ++ _toSchema = {'user_clouds': 'user-clouds'} ++ _toPy = {'user-clouds': 'user_clouds'} ++ def __init__(self, user_clouds=None, **unknown_fields): ++ ''' ++ user_clouds : typing.Sequence<+T_co>[~UserCloud]<~UserCloud> ++ ''' ++ self.user_clouds = [UserCloud.from_json(o) for o in user_clouds or []] ++ ++ ++ ++class UserInfo(Type): ++ _toSchema = {'access': 'access', 'created_by': 'created-by', 'date_created': 'date-created', 'disabled': 'disabled', 'display_name': 'display-name', 'last_connection': 'last-connection', 'username': 'username'} ++ _toPy = {'access': 'access', 'created-by': 'created_by', 'date-created': 'date_created', 'disabled': 'disabled', 'display-name': 'display_name', 'last-connection': 'last_connection', 'username': 'username'} ++ def __init__(self, access=None, created_by=None, date_created=None, disabled=None, display_name=None, last_connection=None, username=None, **unknown_fields): ++ ''' ++ access : str ++ created_by : str ++ date_created : str ++ disabled : bool ++ display_name : str ++ last_connection : str ++ username : str ++ ''' ++ self.access = access ++ self.created_by = created_by ++ self.date_created = date_created ++ self.disabled = disabled ++ self.display_name = display_name ++ self.last_connection = last_connection ++ self.username = username ++ ++ ++ ++class UserInfoRequest(Type): ++ _toSchema = {'entities': 'entities', 'include_disabled': 'include-disabled'} ++ _toPy = {'entities': 'entities', 'include-disabled': 'include_disabled'} ++ def __init__(self, entities=None, include_disabled=None, **unknown_fields): ++ ''' ++ entities : typing.Sequence<+T_co>[~Entity]<~Entity> ++ include_disabled : bool ++ ''' ++ self.entities = [Entity.from_json(o) for o in entities or []] ++ self.include_disabled = include_disabled ++ ++ ++ ++class UserInfoResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : UserInfo ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = UserInfo.from_json(result) if result else None ++ ++ ++ ++class UserInfoResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~UserInfoResult]<~UserInfoResult> ++ ''' ++ self.results = [UserInfoResult.from_json(o) for o in results or []] ++ ++ ++ ++class UserModel(Type): ++ _toSchema = {'last_connection': 'last-connection', 'model': 'model'} ++ _toPy = {'last-connection': 'last_connection', 'model': 'model'} ++ def __init__(self, last_connection=None, model=None, **unknown_fields): ++ ''' ++ last_connection : str ++ model : Model ++ ''' ++ self.last_connection = last_connection ++ self.model = Model.from_json(model) if model else None ++ ++ ++ ++class UserModelList(Type): ++ _toSchema = {'user_models': 'user-models'} ++ _toPy = {'user-models': 'user_models'} ++ def __init__(self, user_models=None, **unknown_fields): ++ ''' ++ user_models : typing.Sequence<+T_co>[~UserModel]<~UserModel> ++ ''' ++ self.user_models = [UserModel.from_json(o) for o in user_models or []] ++ ++ ++ ++class Value(Type): ++ _toSchema = {'arch': 'arch', 'container': 'container', 'cores': 'cores', 'cpu_power': 'cpu-power', 'instance_type': 'instance-type', 'mem': 'mem', 'root_disk': 'root-disk', 'spaces': 'spaces', 'tags': 'tags', 'virt_type': 'virt-type'} ++ _toPy = {'arch': 'arch', 'container': 'container', 'cores': 'cores', 'cpu-power': 'cpu_power', 'instance-type': 'instance_type', 'mem': 'mem', 'root-disk': 'root_disk', 'spaces': 'spaces', 'tags': 'tags', 'virt-type': 'virt_type'} ++ def __init__(self, arch=None, container=None, cores=None, cpu_power=None, instance_type=None, mem=None, root_disk=None, spaces=None, tags=None, virt_type=None, **unknown_fields): ++ ''' ++ arch : str ++ container : str ++ cores : int ++ cpu_power : int ++ instance_type : str ++ mem : int ++ root_disk : int ++ spaces : typing.Sequence<+T_co>[str] ++ tags : typing.Sequence<+T_co>[str] ++ virt_type : str ++ ''' ++ self.arch = arch ++ self.container = container ++ self.cores = cores ++ self.cpu_power = cpu_power ++ self.instance_type = instance_type ++ self.mem = mem ++ self.root_disk = root_disk ++ self.spaces = spaces ++ self.tags = tags ++ self.virt_type = virt_type ++ ++ ++ ++class Version(Type): ++ _toSchema = {'version': 'version'} ++ _toPy = {'version': 'version'} ++ def __init__(self, version=None, **unknown_fields): ++ ''' ++ version : Binary ++ ''' ++ self.version = Binary.from_json(version) if version else None ++ ++ ++ ++class VersionResult(Type): ++ _toSchema = {'error': 'error', 'version': 'version'} ++ _toPy = {'error': 'error', 'version': 'version'} ++ def __init__(self, error=None, version=None, **unknown_fields): ++ ''' ++ error : Error ++ version : Number ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.version = Number.from_json(version) if version else None ++ ++ ++ ++class VersionResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~VersionResult]<~VersionResult> ++ ''' ++ self.results = [VersionResult.from_json(o) for o in results or []] ++ ++ ++ ++class Volume(Type): ++ _toSchema = {'info': 'info', 'volume_tag': 'volume-tag'} ++ _toPy = {'info': 'info', 'volume-tag': 'volume_tag'} ++ def __init__(self, info=None, volume_tag=None, **unknown_fields): ++ ''' ++ info : VolumeInfo ++ volume_tag : str ++ ''' ++ self.info = VolumeInfo.from_json(info) if info else None ++ self.volume_tag = volume_tag ++ ++ ++ ++class VolumeAttachment(Type): ++ _toSchema = {'info': 'info', 'machine_tag': 'machine-tag', 'volume_tag': 'volume-tag'} ++ _toPy = {'info': 'info', 'machine-tag': 'machine_tag', 'volume-tag': 'volume_tag'} ++ def __init__(self, info=None, machine_tag=None, volume_tag=None, **unknown_fields): ++ ''' ++ info : VolumeAttachmentInfo ++ machine_tag : str ++ volume_tag : str ++ ''' ++ self.info = VolumeAttachmentInfo.from_json(info) if info else None ++ self.machine_tag = machine_tag ++ self.volume_tag = volume_tag ++ ++ ++ ++class VolumeAttachmentDetails(Type): ++ _toSchema = {'life': 'life', 'volumeattachmentinfo': 'VolumeAttachmentInfo'} ++ _toPy = {'VolumeAttachmentInfo': 'volumeattachmentinfo', 'life': 'life'} ++ def __init__(self, volumeattachmentinfo=None, life=None, **unknown_fields): ++ ''' ++ volumeattachmentinfo : VolumeAttachmentInfo ++ life : str ++ ''' ++ self.volumeattachmentinfo = VolumeAttachmentInfo.from_json(volumeattachmentinfo) if volumeattachmentinfo else None ++ self.life = life ++ ++ ++ ++class VolumeAttachmentInfo(Type): ++ _toSchema = {'bus_address': 'bus-address', 'device_link': 'device-link', 'device_name': 'device-name', 'read_only': 'read-only'} ++ _toPy = {'bus-address': 'bus_address', 'device-link': 'device_link', 'device-name': 'device_name', 'read-only': 'read_only'} ++ def __init__(self, bus_address=None, device_link=None, device_name=None, read_only=None, **unknown_fields): ++ ''' ++ bus_address : str ++ device_link : str ++ device_name : str ++ read_only : bool ++ ''' ++ self.bus_address = bus_address ++ self.device_link = device_link ++ self.device_name = device_name ++ self.read_only = read_only ++ ++ ++ ++class VolumeAttachmentParams(Type): ++ _toSchema = {'instance_id': 'instance-id', 'machine_tag': 'machine-tag', 'provider': 'provider', 'read_only': 'read-only', 'volume_id': 'volume-id', 'volume_tag': 'volume-tag'} ++ _toPy = {'instance-id': 'instance_id', 'machine-tag': 'machine_tag', 'provider': 'provider', 'read-only': 'read_only', 'volume-id': 'volume_id', 'volume-tag': 'volume_tag'} ++ def __init__(self, instance_id=None, machine_tag=None, provider=None, read_only=None, volume_id=None, volume_tag=None, **unknown_fields): ++ ''' ++ instance_id : str ++ machine_tag : str ++ provider : str ++ read_only : bool ++ volume_id : str ++ volume_tag : str ++ ''' ++ self.instance_id = instance_id ++ self.machine_tag = machine_tag ++ self.provider = provider ++ self.read_only = read_only ++ self.volume_id = volume_id ++ self.volume_tag = volume_tag ++ ++ ++ ++class VolumeAttachmentParamsResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : VolumeAttachmentParams ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = VolumeAttachmentParams.from_json(result) if result else None ++ ++ ++ ++class VolumeAttachmentParamsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~VolumeAttachmentParamsResult]<~VolumeAttachmentParamsResult> ++ ''' ++ self.results = [VolumeAttachmentParamsResult.from_json(o) for o in results or []] ++ ++ ++ ++class VolumeAttachmentResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : VolumeAttachment ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = VolumeAttachment.from_json(result) if result else None ++ ++ ++ ++class VolumeAttachmentResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~VolumeAttachmentResult]<~VolumeAttachmentResult> ++ ''' ++ self.results = [VolumeAttachmentResult.from_json(o) for o in results or []] ++ ++ ++ ++class VolumeAttachments(Type): ++ _toSchema = {'volume_attachments': 'volume-attachments'} ++ _toPy = {'volume-attachments': 'volume_attachments'} ++ def __init__(self, volume_attachments=None, **unknown_fields): ++ ''' ++ volume_attachments : typing.Sequence<+T_co>[~VolumeAttachment]<~VolumeAttachment> ++ ''' ++ self.volume_attachments = [VolumeAttachment.from_json(o) for o in volume_attachments or []] ++ ++ ++ ++class VolumeDetails(Type): ++ _toSchema = {'info': 'info', 'machine_attachments': 'machine-attachments', 'status': 'status', 'storage': 'storage', 'volume_tag': 'volume-tag'} ++ _toPy = {'info': 'info', 'machine-attachments': 'machine_attachments', 'status': 'status', 'storage': 'storage', 'volume-tag': 'volume_tag'} ++ def __init__(self, info=None, machine_attachments=None, status=None, storage=None, volume_tag=None, **unknown_fields): ++ ''' ++ info : VolumeInfo ++ machine_attachments : typing.Mapping<~KT, +VT_co>[str, ~VolumeAttachmentInfo]<~VolumeAttachmentInfo> ++ status : EntityStatus ++ storage : StorageDetails ++ volume_tag : str ++ ''' ++ self.info = VolumeInfo.from_json(info) if info else None ++ self.machine_attachments = machine_attachments ++ self.status = EntityStatus.from_json(status) if status else None ++ self.storage = StorageDetails.from_json(storage) if storage else None ++ self.volume_tag = volume_tag ++ ++ ++ ++class VolumeDetailsListResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : typing.Sequence<+T_co>[~VolumeDetails]<~VolumeDetails> ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = [VolumeDetails.from_json(o) for o in result or []] ++ ++ ++ ++class VolumeDetailsListResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~VolumeDetailsListResult]<~VolumeDetailsListResult> ++ ''' ++ self.results = [VolumeDetailsListResult.from_json(o) for o in results or []] ++ ++ ++ ++class VolumeFilter(Type): ++ _toSchema = {'machines': 'machines'} ++ _toPy = {'machines': 'machines'} ++ def __init__(self, machines=None, **unknown_fields): ++ ''' ++ machines : typing.Sequence<+T_co>[str] ++ ''' ++ self.machines = machines ++ ++ ++ ++class VolumeFilters(Type): ++ _toSchema = {'filters': 'filters'} ++ _toPy = {'filters': 'filters'} ++ def __init__(self, filters=None, **unknown_fields): ++ ''' ++ filters : typing.Sequence<+T_co>[~VolumeFilter]<~VolumeFilter> ++ ''' ++ self.filters = [VolumeFilter.from_json(o) for o in filters or []] ++ ++ ++ ++class VolumeInfo(Type): ++ _toSchema = {'hardware_id': 'hardware-id', 'persistent': 'persistent', 'size': 'size', 'volume_id': 'volume-id'} ++ _toPy = {'hardware-id': 'hardware_id', 'persistent': 'persistent', 'size': 'size', 'volume-id': 'volume_id'} ++ def __init__(self, hardware_id=None, persistent=None, size=None, volume_id=None, **unknown_fields): ++ ''' ++ hardware_id : str ++ persistent : bool ++ size : int ++ volume_id : str ++ ''' ++ self.hardware_id = hardware_id ++ self.persistent = persistent ++ self.size = size ++ self.volume_id = volume_id ++ ++ ++ ++class VolumeParams(Type): ++ _toSchema = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'tags': 'tags', 'volume_tag': 'volume-tag'} ++ _toPy = {'attachment': 'attachment', 'attributes': 'attributes', 'provider': 'provider', 'size': 'size', 'tags': 'tags', 'volume-tag': 'volume_tag'} ++ def __init__(self, attachment=None, attributes=None, provider=None, size=None, tags=None, volume_tag=None, **unknown_fields): ++ ''' ++ attachment : VolumeAttachmentParams ++ attributes : typing.Mapping<~KT, +VT_co>[str, typing.Any] ++ provider : str ++ size : int ++ tags : typing.Mapping<~KT, +VT_co>[str, str] ++ volume_tag : str ++ ''' ++ self.attachment = VolumeAttachmentParams.from_json(attachment) if attachment else None ++ self.attributes = attributes ++ self.provider = provider ++ self.size = size ++ self.tags = tags ++ self.volume_tag = volume_tag ++ ++ ++ ++class VolumeParamsResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : VolumeParams ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = VolumeParams.from_json(result) if result else None ++ ++ ++ ++class VolumeParamsResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~VolumeParamsResult]<~VolumeParamsResult> ++ ''' ++ self.results = [VolumeParamsResult.from_json(o) for o in results or []] ++ ++ ++ ++class VolumeResult(Type): ++ _toSchema = {'error': 'error', 'result': 'result'} ++ _toPy = {'error': 'error', 'result': 'result'} ++ def __init__(self, error=None, result=None, **unknown_fields): ++ ''' ++ error : Error ++ result : Volume ++ ''' ++ self.error = Error.from_json(error) if error else None ++ self.result = Volume.from_json(result) if result else None ++ ++ ++ ++class VolumeResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~VolumeResult]<~VolumeResult> ++ ''' ++ self.results = [VolumeResult.from_json(o) for o in results or []] ++ ++ ++ ++class Volumes(Type): ++ _toSchema = {'volumes': 'volumes'} ++ _toPy = {'volumes': 'volumes'} ++ def __init__(self, volumes=None, **unknown_fields): ++ ''' ++ volumes : typing.Sequence<+T_co>[~Volume]<~Volume> ++ ''' ++ self.volumes = [Volume.from_json(o) for o in volumes or []] ++ ++ ++ ++class WatchContainer(Type): ++ _toSchema = {'container_type': 'container-type', 'machine_tag': 'machine-tag'} ++ _toPy = {'container-type': 'container_type', 'machine-tag': 'machine_tag'} ++ def __init__(self, container_type=None, machine_tag=None, **unknown_fields): ++ ''' ++ container_type : str ++ machine_tag : str ++ ''' ++ self.container_type = container_type ++ self.machine_tag = machine_tag ++ ++ ++ ++class WatchContainers(Type): ++ _toSchema = {'params': 'params'} ++ _toPy = {'params': 'params'} ++ def __init__(self, params=None, **unknown_fields): ++ ''' ++ params : typing.Sequence<+T_co>[~WatchContainer]<~WatchContainer> ++ ''' ++ self.params = [WatchContainer.from_json(o) for o in params or []] ++ ++ ++ ++class ZoneResult(Type): ++ _toSchema = {'available': 'available', 'error': 'error', 'name': 'name'} ++ _toPy = {'available': 'available', 'error': 'error', 'name': 'name'} ++ def __init__(self, available=None, error=None, name=None, **unknown_fields): ++ ''' ++ available : bool ++ error : Error ++ name : str ++ ''' ++ self.available = available ++ self.error = Error.from_json(error) if error else None ++ self.name = name ++ ++ ++ ++class ZoneResults(Type): ++ _toSchema = {'results': 'results'} ++ _toPy = {'results': 'results'} ++ def __init__(self, results=None, **unknown_fields): ++ ''' ++ results : typing.Sequence<+T_co>[~ZoneResult]<~ZoneResult> ++ ''' ++ self.results = [ZoneResult.from_json(o) for o in results or []] ++ ++ diff --cc modules/libjuju/juju/client/client.py index 0000000,0000000..89b5248 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/client.py @@@ -1,0 -1,0 +1,34 @@@ ++'''Replace auto-generated classes with our own, where necessary. ++''' ++ ++from . import _client, _definitions, overrides ++ ++ ++for o in overrides.__all__: ++ if not "Facade" in o: ++ # Override stuff in _definitions, which is all imported ++ # into _client. We Monkey patch both the original class and ++ # the ref in _client (import shenanigans are fun!) ++ setattr(_definitions, o, getattr(overrides, o)) ++ setattr(_client, o, getattr(overrides, o)) ++ # We shouldn't be overriding Facades! ++ else: ++ raise ValueError( ++ "Cannot override a versioned Facade class -- you must patch " ++ "it instead.") ++ ++for o in overrides.__patches__: ++ # Patch a versioned Facade. ++ for client_version in _client.CLIENTS.values(): ++ try: ++ c_type = getattr(client_version, o) ++ except AttributeError: ++ # Not all the _client modules may have the ++ # facade. That's okay -- we just skip over them. ++ continue ++ o_type = getattr(overrides, o) ++ for a in dir(o_type): ++ if not a.startswith('_'): ++ setattr(c_type, a, getattr(o_type, a)) ++ ++from ._client import * # noqa diff --cc modules/libjuju/juju/client/codegen.py index 0000000,0000000..f8a792a new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/codegen.py @@@ -1,0 -1,0 +1,52 @@@ ++from collections import defaultdict ++from io import StringIO ++from textwrap import indent ++ ++ ++class CodeWriter(StringIO): ++ """ ++ Blob of text that, when used in the context of facade.py, ends up ++ holding the source code for a Python class and associated methods. ++ ++ """ ++ INDENT = " " ++ ++ CLASS = 0 ++ METHOD = 1 ++ ++ def write(self, msg, depth=0): ++ if depth: ++ prefix = self.INDENT * depth ++ msg = indent(msg, prefix) ++ ++ return super(CodeWriter, self).write(msg) ++ ++ def __str__(self): ++ return super(CodeWriter, self).getvalue() ++ ++ ++class Capture(defaultdict): ++ """ ++ A collection of CodeWriter objects, together representing a Python ++ module. ++ ++ """ ++ ++ def __init__(self, default_factory=CodeWriter, *args, **kwargs): ++ super(Capture, self).__init__(default_factory, *args, **kwargs) ++ ++ def clear(self, name): ++ """ ++ Reset one of the keys in this class, if it exists. ++ ++ This is necessary, because we don't worry about de-duplicating ++ the schemas for each version of juju up front, and this gives ++ us a way to sort of de-duplicate on the fly, by resetting a ++ specific CodeWriter instance before we start to write a class ++ into it. ++ ++ """ ++ try: ++ del self[name] ++ except KeyError: ++ pass diff --cc modules/libjuju/juju/client/connection.py index 0000000,0000000..7457391 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/connection.py @@@ -1,0 -1,0 +1,623 @@@ ++import base64 ++import io ++import json ++import logging ++import os ++import random ++import shlex ++import ssl ++import string ++import subprocess ++import weakref ++import websockets ++from concurrent.futures import CancelledError ++from http.client import HTTPSConnection ++from pathlib import Path ++ ++import asyncio ++import yaml ++ ++from juju import tag, utils ++from juju.client import client ++from juju.errors import JujuError, JujuAPIError, JujuConnectionError ++from juju.utils import IdQueue ++ ++log = logging.getLogger("websocket") ++ ++ ++class Monitor: ++ """ ++ Monitor helper class for our Connection class. ++ ++ Contains a reference to an instantiated Connection, along with a ++ reference to the Connection.receiver Future. Upon inspecttion of ++ these objects, this class determines whether the connection is in ++ an 'error', 'connected' or 'disconnected' state. ++ ++ Use this class to stay up to date on the health of a connection, ++ and take appropriate action if the connection errors out due to ++ network issues or other unexpected circumstances. ++ ++ """ ++ ERROR = 'error' ++ CONNECTED = 'connected' ++ DISCONNECTING = 'disconnecting' ++ DISCONNECTED = 'disconnected' ++ ++ def __init__(self, connection): ++ self.connection = weakref.ref(connection) ++ self.reconnecting = asyncio.Lock(loop=connection.loop) ++ self.close_called = asyncio.Event(loop=connection.loop) ++ self.receiver_stopped = asyncio.Event(loop=connection.loop) ++ self.pinger_stopped = asyncio.Event(loop=connection.loop) ++ self.receiver_stopped.set() ++ self.pinger_stopped.set() ++ ++ @property ++ def status(self): ++ """ ++ Determine the status of the connection and receiver, and return ++ ERROR, CONNECTED, or DISCONNECTED as appropriate. ++ ++ For simplicity, we only consider ourselves to be connected ++ after the Connection class has setup a receiver task. This ++ only happens after the websocket is open, and the connection ++ isn't usable until that receiver has been started. ++ ++ """ ++ connection = self.connection() ++ ++ # the connection instance was destroyed but someone kept ++ # a separate reference to the monitor for some reason ++ if not connection: ++ return self.DISCONNECTED ++ ++ # connection cleanly disconnected or not yet opened ++ if not connection.ws: ++ return self.DISCONNECTED ++ ++ # close called but not yet complete ++ if self.close_called.is_set(): ++ return self.DISCONNECTING ++ ++ # connection closed uncleanly (we didn't call connection.close) ++ if self.receiver_stopped.is_set() or not connection.ws.open: ++ return self.ERROR ++ ++ # everything is fine! ++ return self.CONNECTED ++ ++ ++class Connection: ++ """ ++ Usage:: ++ ++ # Connect to an arbitrary api server ++ client = await Connection.connect( ++ api_endpoint, model_uuid, username, password, cacert) ++ ++ # Connect using a controller/model name ++ client = await Connection.connect_model('local.local:default') ++ ++ # Connect to the currently active model ++ client = await Connection.connect_current() ++ ++ Note: Any connection method or constructor can accept an optional `loop` ++ argument to override the default event loop from `asyncio.get_event_loop`. ++ """ ++ ++ DEFAULT_FRAME_SIZE = 'default_frame_size' ++ MAX_FRAME_SIZE = 2**22 ++ "Maximum size for a single frame. Defaults to 4MB." ++ ++ def __init__( ++ self, endpoint, uuid, username, password, cacert=None, ++ macaroons=None, loop=None, max_frame_size=DEFAULT_FRAME_SIZE): ++ self.endpoint = endpoint ++ self._endpoint = endpoint ++ self.uuid = uuid ++ if macaroons: ++ self.macaroons = macaroons ++ self.username = '' ++ self.password = '' ++ else: ++ self.macaroons = [] ++ self.username = username ++ self.password = password ++ self.cacert = cacert ++ self._cacert = cacert ++ self.loop = loop or asyncio.get_event_loop() ++ ++ self.__request_id__ = 0 ++ self.addr = None ++ self.ws = None ++ self.facades = {} ++ self.messages = IdQueue(loop=self.loop) ++ self.monitor = Monitor(connection=self) ++ if max_frame_size is self.DEFAULT_FRAME_SIZE: ++ max_frame_size = self.MAX_FRAME_SIZE ++ self.max_frame_size = max_frame_size ++ ++ @property ++ def is_open(self): ++ return self.monitor.status == Monitor.CONNECTED ++ ++ def _get_ssl(self, cert=None): ++ return ssl.create_default_context( ++ purpose=ssl.Purpose.CLIENT_AUTH, cadata=cert) ++ ++ async def open(self): ++ if self.uuid: ++ url = "wss://{}/model/{}/api".format(self.endpoint, self.uuid) ++ else: ++ url = "wss://{}/api".format(self.endpoint) ++ ++ kw = dict() ++ kw['ssl'] = self._get_ssl(self.cacert) ++ kw['loop'] = self.loop ++ kw['max_size'] = self.max_frame_size ++ self.addr = url ++ self.ws = await websockets.connect(url, **kw) ++ self.loop.create_task(self.receiver()) ++ self.monitor.receiver_stopped.clear() ++ log.info("Driver connected to juju %s", url) ++ self.monitor.close_called.clear() ++ return self ++ ++ async def close(self): ++ if not self.ws: ++ return ++ self.monitor.close_called.set() ++ await self.monitor.pinger_stopped.wait() ++ await self.monitor.receiver_stopped.wait() ++ await self.ws.close() ++ self.ws = None ++ ++ async def recv(self, request_id): ++ if not self.is_open: ++ raise websockets.exceptions.ConnectionClosed(0, 'websocket closed') ++ return await self.messages.get(request_id) ++ ++ async def receiver(self): ++ try: ++ while self.is_open: ++ result = await utils.run_with_interrupt( ++ self.ws.recv(), ++ self.monitor.close_called, ++ loop=self.loop) ++ if self.monitor.close_called.is_set(): ++ break ++ if result is not None: ++ result = json.loads(result) ++ await self.messages.put(result['request-id'], result) ++ except CancelledError: ++ pass ++ except websockets.ConnectionClosed as e: ++ log.warning('Receiver: Connection closed, reconnecting') ++ await self.messages.put_all(e) ++ # the reconnect has to be done as a task because the receiver will ++ # be cancelled by the reconnect and we don't want the reconnect ++ # to be aborted half-way through ++ self.loop.create_task(self.reconnect()) ++ return ++ except Exception as e: ++ log.exception("Error in receiver") ++ # make pending listeners aware of the error ++ await self.messages.put_all(e) ++ raise ++ finally: ++ self.monitor.receiver_stopped.set() ++ ++ async def pinger(self): ++ ''' ++ A Controller can time us out if we are silent for too long. This ++ is especially true in JaaS, which has a fairly strict timeout. ++ ++ To prevent timing out, we send a ping every ten seconds. ++ ++ ''' ++ async def _do_ping(): ++ try: ++ await pinger_facade.Ping() ++ await asyncio.sleep(10, loop=self.loop) ++ except CancelledError: ++ pass ++ ++ pinger_facade = client.PingerFacade.from_connection(self) ++ try: ++ while True: ++ await utils.run_with_interrupt( ++ _do_ping(), ++ self.monitor.close_called, ++ loop=self.loop) ++ if self.monitor.close_called.is_set(): ++ break ++ finally: ++ self.monitor.pinger_stopped.set() ++ return ++ ++ async def rpc(self, msg, encoder=None): ++ self.__request_id__ += 1 ++ msg['request-id'] = self.__request_id__ ++ if'params' not in msg: ++ msg['params'] = {} ++ if "version" not in msg: ++ msg['version'] = self.facades[msg['type']] ++ outgoing = json.dumps(msg, indent=2, cls=encoder) ++ for attempt in range(3): ++ try: ++ await self.ws.send(outgoing) ++ break ++ except websockets.ConnectionClosed: ++ if attempt == 2: ++ raise ++ log.warning('RPC: Connection closed, reconnecting') ++ # the reconnect has to be done in a separate task because, ++ # if it is triggered by the pinger, then this RPC call will ++ # be cancelled when the pinger is cancelled by the reconnect, ++ # and we don't want the reconnect to be aborted halfway through ++ await asyncio.wait([self.reconnect()], loop=self.loop) ++ result = await self.recv(msg['request-id']) ++ ++ if not result: ++ return result ++ ++ if 'error' in result: ++ # API Error Response ++ raise JujuAPIError(result) ++ ++ if 'response' not in result: ++ # This may never happen ++ return result ++ ++ if 'results' in result['response']: ++ # Check for errors in a result list. ++ errors = [] ++ for res in result['response']['results']: ++ if res.get('error', {}).get('message'): ++ errors.append(res['error']['message']) ++ if errors: ++ raise JujuError(errors) ++ ++ elif result['response'].get('error', {}).get('message'): ++ raise JujuError(result['response']['error']['message']) ++ ++ return result ++ ++ def http_headers(self): ++ """Return dictionary of http headers necessary for making an http ++ connection to the endpoint of this Connection. ++ ++ :return: Dictionary of headers ++ ++ """ ++ if not self.username: ++ return {} ++ ++ creds = u'{}:{}'.format( ++ tag.user(self.username), ++ self.password or '' ++ ) ++ token = base64.b64encode(creds.encode()) ++ return { ++ 'Authorization': 'Basic {}'.format(token.decode()) ++ } ++ ++ def https_connection(self): ++ """Return an https connection to this Connection's endpoint. ++ ++ Returns a 3-tuple containing:: ++ ++ 1. The :class:`HTTPSConnection` instance ++ 2. Dictionary of auth headers to be used with the connection ++ 3. The root url path (str) to be used for requests. ++ ++ """ ++ endpoint = self.endpoint ++ host, remainder = endpoint.split(':', 1) ++ port = remainder ++ if '/' in remainder: ++ port, _ = remainder.split('/', 1) ++ ++ conn = HTTPSConnection( ++ host, int(port), ++ context=self._get_ssl(self.cacert), ++ ) ++ ++ path = ( ++ "/model/{}".format(self.uuid) ++ if self.uuid else "" ++ ) ++ return conn, self.http_headers(), path ++ ++ async def clone(self): ++ """Return a new Connection, connected to the same websocket endpoint ++ as this one. ++ ++ """ ++ return await Connection.connect( ++ self.endpoint, ++ self.uuid, ++ self.username, ++ self.password, ++ self.cacert, ++ self.macaroons, ++ self.loop, ++ self.max_frame_size, ++ ) ++ ++ async def controller(self): ++ """Return a Connection to the controller at self.endpoint ++ ++ """ ++ return await Connection.connect( ++ self.endpoint, ++ None, ++ self.username, ++ self.password, ++ self.cacert, ++ self.macaroons, ++ self.loop, ++ ) ++ ++ async def _try_endpoint(self, endpoint, cacert): ++ success = False ++ result = None ++ new_endpoints = [] ++ ++ self.endpoint = endpoint ++ self.cacert = cacert ++ await self.open() ++ try: ++ result = await self.login() ++ if 'discharge-required-error' in result['response']: ++ log.info('Macaroon discharge required, disconnecting') ++ else: ++ # successful login! ++ log.info('Authenticated') ++ success = True ++ except JujuAPIError as e: ++ if e.error_code != 'redirection required': ++ raise ++ log.info('Controller requested redirect') ++ redirect_info = await self.redirect_info() ++ redir_cacert = redirect_info['ca-cert'] ++ new_endpoints = [ ++ ("{value}:{port}".format(**s), redir_cacert) ++ for servers in redirect_info['servers'] ++ for s in servers if s["scope"] == 'public' ++ ] ++ finally: ++ if not success: ++ await self.close() ++ return success, result, new_endpoints ++ ++ async def reconnect(self): ++ """ Force a reconnection. ++ """ ++ monitor = self.monitor ++ if monitor.reconnecting.locked() or monitor.close_called.is_set(): ++ return ++ async with monitor.reconnecting: ++ await self.close() ++ await self._connect() ++ ++ async def _connect(self): ++ endpoints = [(self._endpoint, self._cacert)] ++ while endpoints: ++ _endpoint, _cacert = endpoints.pop(0) ++ success, result, new_endpoints = await self._try_endpoint( ++ _endpoint, _cacert) ++ if success: ++ break ++ endpoints.extend(new_endpoints) ++ else: ++ # ran out of endpoints without a successful login ++ raise Exception("Couldn't authenticate to {}".format( ++ self._endpoint)) ++ ++ response = result['response'] ++ self.info = response.copy() ++ self.build_facades(response.get('facades', {})) ++ self.loop.create_task(self.pinger()) ++ self.monitor.pinger_stopped.clear() ++ ++ @classmethod ++ async def connect( ++ cls, endpoint, uuid, username, password, cacert=None, ++ macaroons=None, loop=None, max_frame_size=None): ++ """Connect to the websocket. ++ ++ If uuid is None, the connection will be to the controller. Otherwise it ++ will be to the model. ++ ++ """ ++ client = cls(endpoint, uuid, username, password, cacert, macaroons, ++ loop, max_frame_size) ++ await client._connect() ++ return client ++ ++ @classmethod ++ async def connect_current(cls, loop=None, max_frame_size=None): ++ """Connect to the currently active model. ++ ++ """ ++ jujudata = JujuData() ++ ++ controller_name = jujudata.current_controller() ++ if not controller_name: ++ raise JujuConnectionError('No current controller') ++ ++ model_name = jujudata.current_model() ++ ++ return await cls.connect_model( ++ '{}:{}'.format(controller_name, model_name), loop, max_frame_size) ++ ++ @classmethod ++ async def connect_current_controller(cls, loop=None, max_frame_size=None): ++ """Connect to the currently active controller. ++ ++ """ ++ jujudata = JujuData() ++ controller_name = jujudata.current_controller() ++ if not controller_name: ++ raise JujuConnectionError('No current controller') ++ ++ return await cls.connect_controller(controller_name, loop, ++ max_frame_size) ++ ++ @classmethod ++ async def connect_controller(cls, controller_name, loop=None, ++ max_frame_size=None): ++ """Connect to a controller by name. ++ ++ """ ++ jujudata = JujuData() ++ controller = jujudata.controllers()[controller_name] ++ endpoint = controller['api-endpoints'][0] ++ cacert = controller.get('ca-cert') ++ accounts = jujudata.accounts()[controller_name] ++ username = accounts['user'] ++ password = accounts.get('password') ++ macaroons = get_macaroons(controller_name) if not password else None ++ ++ return await cls.connect( ++ endpoint, None, username, password, cacert, macaroons, loop, ++ max_frame_size) ++ ++ @classmethod ++ async def connect_model(cls, model, loop=None, max_frame_size=None): ++ """Connect to a model by name. ++ ++ :param str model: [:] ++ ++ """ ++ jujudata = JujuData() ++ ++ if ':' in model: ++ # explicit controller given ++ controller_name, model_name = model.split(':') ++ else: ++ # use the current controller if one isn't explicitly given ++ controller_name = jujudata.current_controller() ++ model_name = model ++ ++ accounts = jujudata.accounts()[controller_name] ++ username = accounts['user'] ++ # model name must include a user prefix, so add it if it doesn't ++ if '/' not in model_name: ++ model_name = '{}/{}'.format(username, model_name) ++ ++ controller = jujudata.controllers()[controller_name] ++ endpoint = controller['api-endpoints'][0] ++ cacert = controller.get('ca-cert') ++ password = accounts.get('password') ++ models = jujudata.models()[controller_name] ++ model_uuid = models['models'][model_name]['uuid'] ++ macaroons = get_macaroons(controller_name) if not password else None ++ ++ return await cls.connect( ++ endpoint, model_uuid, username, password, cacert, macaroons, loop, ++ max_frame_size) ++ ++ def build_facades(self, facades): ++ self.facades.clear() ++ for facade in facades: ++ self.facades[facade['name']] = facade['versions'][-1] ++ ++ async def login(self): ++ username = self.username ++ if username and not username.startswith('user-'): ++ username = 'user-{}'.format(username) ++ ++ result = await self.rpc({ ++ "type": "Admin", ++ "request": "Login", ++ "version": 3, ++ "params": { ++ "auth-tag": username, ++ "credentials": self.password, ++ "nonce": "".join(random.sample(string.printable, 12)), ++ "macaroons": self.macaroons ++ }}) ++ return result ++ ++ async def redirect_info(self): ++ try: ++ result = await self.rpc({ ++ "type": "Admin", ++ "request": "RedirectInfo", ++ "version": 3, ++ }) ++ except JujuAPIError as e: ++ if e.message == 'not redirected': ++ return None ++ raise ++ return result['response'] ++ ++ ++class JujuData: ++ def __init__(self): ++ self.path = os.environ.get('JUJU_DATA') or '~/.local/share/juju' ++ self.path = os.path.abspath(os.path.expanduser(self.path)) ++ ++ def current_controller(self): ++ cmd = shlex.split('juju list-controllers --format yaml') ++ output = subprocess.check_output(cmd) ++ output = yaml.safe_load(output) ++ return output.get('current-controller', '') ++ ++ def current_model(self, controller_name=None): ++ if not controller_name: ++ controller_name = self.current_controller() ++ models = self.models()[controller_name] ++ if 'current-model' not in models: ++ raise JujuError('No current model') ++ return models['current-model'] ++ ++ def controllers(self): ++ return self._load_yaml('controllers.yaml', 'controllers') ++ ++ def models(self): ++ return self._load_yaml('models.yaml', 'controllers') ++ ++ def accounts(self): ++ return self._load_yaml('accounts.yaml', 'controllers') ++ ++ def _load_yaml(self, filename, key): ++ filepath = os.path.join(self.path, filename) ++ with io.open(filepath, 'rt') as f: ++ return yaml.safe_load(f)[key] ++ ++ ++def get_macaroons(controller_name=None): ++ """Decode and return macaroons from default ~/.go-cookies ++ ++ """ ++ cookie_files = [] ++ if controller_name: ++ cookie_files.append('~/.local/share/juju/cookies/{}.json'.format( ++ controller_name)) ++ cookie_files.append('~/.go-cookies') ++ for cookie_file in cookie_files: ++ cookie_file = Path(cookie_file).expanduser() ++ if cookie_file.exists(): ++ try: ++ cookies = json.loads(cookie_file.read_text()) ++ break ++ except (OSError, ValueError): ++ log.warn("Couldn't load macaroons from %s", cookie_file) ++ return [] ++ else: ++ log.warn("Couldn't load macaroons from %s", ' or '.join(cookie_files)) ++ return [] ++ ++ base64_macaroons = [ ++ c['Value'] for c in cookies ++ if c['Name'].startswith('macaroon-') and c['Value'] ++ ] ++ ++ return [ ++ json.loads(base64.b64decode(value).decode('utf-8')) ++ for value in base64_macaroons ++ ] diff --cc modules/libjuju/juju/client/facade.py index 0000000,0000000..c959e01 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/facade.py @@@ -1,0 -1,0 +1,784 @@@ ++import argparse ++import builtins ++from collections import defaultdict ++import functools ++from glob import glob ++import json ++import keyword ++from pathlib import Path ++import pprint ++import re ++import textwrap ++from typing import Sequence, Mapping, TypeVar, Any, Union ++import typing ++ ++from . import codegen ++ ++_marker = object() ++ ++JUJU_VERSION = re.compile('[0-9]+\.[0-9-]+[\.\-][0-9a-z]+(\.[0-9]+)?') ++# Workaround for https://bugs.launchpad.net/juju/+bug/1683906 ++NAUGHTY_CLASSES = ['ClientFacade', 'Client', 'FullStatus', 'ModelStatusInfo', ++ 'ModelInfo'] ++ ++ ++# Map basic types to Python's typing with a callable ++SCHEMA_TO_PYTHON = { ++ 'string': str, ++ 'integer': int, ++ 'float': float, ++ 'number': float, ++ 'boolean': bool, ++ 'object': Any, ++} ++ ++ ++# Friendly warning message to stick at the top of generated files. ++HEADER = """\ ++# DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. ++# Changes will be overwritten/lost when the file is regenerated. ++ ++""" ++ ++ ++# Classes and helper functions that we'll write to _client.py ++LOOKUP_FACADE = ''' ++def lookup_facade(name, version): ++ """ ++ Given a facade name and version, attempt to pull that facade out ++ of the correct client.py file. ++ ++ """ ++ try: ++ facade = getattr(CLIENTS[str(version)], name) ++ except KeyError: ++ raise ImportError("No facades found for version {}".format(version)) ++ except AttributeError: ++ raise ImportError( ++ "No facade with name '{}' in version {}".format(name, version)) ++ return facade ++ ++ ++''' ++ ++TYPE_FACTORY = ''' ++class TypeFactory: ++ @classmethod ++ def from_connection(cls, connection): ++ """ ++ Given a connected Connection object, return an initialized and ++ connected instance of an API Interface matching the name of ++ this class. ++ ++ @param connection: initialized Connection object. ++ ++ """ ++ version = connection.facades[cls.__name__[:-6]] ++ ++ c = lookup_facade(cls.__name__, version) ++ c = c() ++ c.connect(connection) ++ ++ return c ++ ++ ++''' ++ ++CLIENT_TABLE = ''' ++CLIENTS = {{ ++ {clients} ++}} ++ ++ ++''' ++ ++ ++class KindRegistry(dict): ++ def register(self, name, version, obj): ++ self[name] = {version: { ++ "object": obj, ++ }} ++ ++ def lookup(self, name, version=None): ++ """If version is omitted, max version is used""" ++ versions = self.get(name) ++ if not versions: ++ return None ++ if version: ++ return versions[version] ++ return versions[max(versions)] ++ ++ def getObj(self, name, version=None): ++ result = self.lookup(name, version) ++ if result: ++ obj = result["object"] ++ return obj ++ return None ++ ++ ++class TypeRegistry(dict): ++ def get(self, name): ++ # Two way mapping ++ refname = Schema.referenceName(name) ++ if refname not in self: ++ result = TypeVar(refname) ++ self[refname] = result ++ self[result] = refname ++ ++ return self[refname] ++ ++_types = TypeRegistry() ++_registry = KindRegistry() ++CLASSES = {} ++factories = codegen.Capture() ++ ++ ++def booler(v): ++ if isinstance(v, str): ++ if v == "false": ++ return False ++ return bool(v) ++ ++ ++def getRefType(ref): ++ return _types.get(ref) ++ ++ ++def refType(obj): ++ return getRefType(obj["$ref"]) ++ ++ ++def objType(obj): ++ kind = obj.get('type') ++ if not kind: ++ raise ValueError("%s has no type" % obj) ++ result = SCHEMA_TO_PYTHON.get(kind) ++ if not result: ++ raise ValueError("%s has type %s" % (obj, kind)) ++ return result ++ ++ ++basic_types = [str, bool, int, float] ++ ++ ++def name_to_py(name): ++ result = name.replace("-", "_") ++ result = result.lower() ++ if keyword.iskeyword(result) or result in dir(builtins): ++ result += "_" ++ return result ++ ++ ++def strcast(kind, keep_builtins=False): ++ if issubclass(kind, typing.GenericMeta): ++ return str(kind)[1:] ++ if str(kind).startswith('~'): ++ return str(kind)[1:] ++ if (kind in basic_types or ++ type(kind) in basic_types) and keep_builtins is False: ++ return kind.__name__ ++ return kind ++ ++ ++class Args(list): ++ def __init__(self, defs): ++ self.defs = defs ++ if defs: ++ rtypes = _registry.getObj(_types[defs]) ++ if len(rtypes) == 1: ++ if not self.do_explode(rtypes[0][1]): ++ for name, rtype in rtypes: ++ self.append((name, rtype)) ++ else: ++ for name, rtype in rtypes: ++ self.append((name, rtype)) ++ ++ def do_explode(self, kind): ++ if kind in basic_types or type(kind) is typing.TypeVar: ++ return False ++ if not issubclass(kind, (typing.Sequence, ++ typing.Mapping)): ++ self.clear() ++ self.extend(Args(kind)) ++ return True ++ return False ++ ++ def PyToSchemaMapping(self): ++ m = {} ++ for n, rt in self: ++ m[name_to_py(n)] = n ++ return m ++ ++ def SchemaToPyMapping(self): ++ m = {} ++ for n, tr in self: ++ m[n] = name_to_py(n) ++ return m ++ ++ def _format(self, name, rtype, typed=True): ++ if typed: ++ return "{} : {}".format( ++ name_to_py(name), ++ strcast(rtype) ++ ) ++ else: ++ return name_to_py(name) ++ ++ def _get_arg_str(self, typed=False, joined=", "): ++ if self: ++ parts = [] ++ for item in self: ++ parts.append(self._format(item[0], item[1], typed)) ++ if joined: ++ return joined.join(parts) ++ return parts ++ return '' ++ ++ def as_kwargs(self): ++ if self: ++ parts = [] ++ for item in self: ++ parts.append('{}=None'.format(name_to_py(item[0]))) ++ return ', '.join(parts) ++ return '' ++ ++ def typed(self): ++ return self._get_arg_str(True) ++ ++ def __str__(self): ++ return self._get_arg_str(False) ++ ++ def get_doc(self): ++ return self._get_arg_str(True, "\n") ++ ++ ++def buildTypes(schema, capture): ++ INDENT = " " ++ for kind in sorted((k for k in _types if not isinstance(k, str)), ++ key=lambda x: str(x)): ++ name = _types[kind] ++ if name in capture and not name in NAUGHTY_CLASSES: ++ continue ++ args = Args(kind) ++ # Write Factory class for _client.py ++ make_factory(name) ++ # Write actual class ++ source = [""" ++class {}(Type): ++ _toSchema = {} ++ _toPy = {} ++ def __init__(self{}{}, **unknown_fields): ++ ''' ++{} ++ '''""".format( ++ name, ++ # pprint these to get stable ordering across regens ++ pprint.pformat(args.PyToSchemaMapping(), width=999), ++ pprint.pformat(args.SchemaToPyMapping(), width=999), ++ ", " if args else "", ++ args.as_kwargs(), ++ textwrap.indent(args.get_doc(), INDENT * 2)) ++ ] ++ assignments = args._get_arg_str(False, False) ++ ++ if not args: ++ source.append("{}pass".format(INDENT * 2)) ++ else: ++ for arg in args: ++ arg_name = name_to_py(arg[0]) ++ arg_type = arg[1] ++ arg_type_name = strcast(arg_type) ++ if arg_type in basic_types: ++ source.append("{}self.{} = {}".format(INDENT * 2, arg_name, arg_name)) ++ elif issubclass(arg_type, typing.Sequence): ++ value_type = ( ++ arg_type_name.__parameters__[0] ++ if len(arg_type_name.__parameters__) ++ else None ++ ) ++ if type(value_type) is typing.TypeVar: ++ source.append("{}self.{} = [{}.from_json(o) for o in {} or []]".format( ++ INDENT * 2, arg_name, strcast(value_type), arg_name)) ++ else: ++ source.append("{}self.{} = {}".format(INDENT * 2, arg_name, arg_name)) ++ elif issubclass(arg_type, typing.Mapping): ++ value_type = ( ++ arg_type_name.__parameters__[1] ++ if len(arg_type_name.__parameters__) > 1 ++ else None ++ ) ++ if type(value_type) is typing.TypeVar: ++ source.append("{}self.{} = {{k: {}.from_json(v) for k, v in ({} or dict()).items()}}".format( ++ INDENT * 2, arg_name, strcast(value_type), arg_name)) ++ else: ++ source.append("{}self.{} = {}".format(INDENT * 2, arg_name, arg_name)) ++ elif type(arg_type) is typing.TypeVar: ++ source.append("{}self.{} = {}.from_json({}) if {} else None".format( ++ INDENT * 2, arg_name, arg_type_name, arg_name, arg_name)) ++ else: ++ source.append("{}self.{} = {}".format(INDENT * 2, arg_name, arg_name)) ++ ++ source = "\n".join(source) ++ capture.clear(name) ++ capture[name].write(source) ++ capture[name].write("\n\n") ++ co = compile(source, __name__, "exec") ++ ns = _getns() ++ exec(co, ns) ++ cls = ns[name] ++ CLASSES[name] = cls ++ ++ ++def retspec(defs): ++ # return specs ++ # only return 1, so if there is more than one type ++ # we need to include a union ++ # In truth there is only 1 return ++ # Error or the expected Type ++ if not defs: ++ return None ++ if defs in basic_types: ++ return strcast(defs, False) ++ rtypes = _registry.getObj(_types[defs]) ++ if not rtypes: ++ return None ++ if len(rtypes) > 1: ++ return Union[tuple([strcast(r[1], True) for r in rtypes])] ++ return strcast(rtypes[0][1], False) ++ ++ ++def return_type(defs): ++ if not defs: ++ return None ++ rtypes = _registry.getObj(_types[defs]) ++ if not rtypes: ++ return None ++ if len(rtypes) > 1: ++ for n, t in rtypes: ++ if n == "Error": ++ continue ++ return t ++ return rtypes[0][1] ++ ++ ++def type_anno_func(func, defs, is_result=False): ++ annos = {} ++ if not defs: ++ return func ++ rtypes = _registry.getObj(_types[defs]) ++ if is_result: ++ kn = "return" ++ if not rtypes: ++ annos[kn] = None ++ elif len(rtypes) > 1: ++ annos[kn] = Union[tuple([r[1] for r in rtypes])] ++ else: ++ annos[kn] = rtypes[0][1] ++ else: ++ for name, rtype in rtypes: ++ name = name_to_py(name) ++ annos[name] = rtype ++ func.__annotations__.update(annos) ++ return func ++ ++ ++def ReturnMapping(cls): ++ # Annotate the method with a return Type ++ # so the value can be cast ++ def decorator(f): ++ @functools.wraps(f) ++ async def wrapper(*args, **kwargs): ++ nonlocal cls ++ reply = await f(*args, **kwargs) ++ if cls is None: ++ return reply ++ if 'error' in reply: ++ cls = CLASSES['Error'] ++ if issubclass(cls, typing.Sequence): ++ result = [] ++ item_cls = cls.__parameters__[0] ++ for item in reply: ++ result.append(item_cls.from_json(item)) ++ """ ++ if 'error' in item: ++ cls = CLASSES['Error'] ++ else: ++ cls = item_cls ++ result.append(cls.from_json(item)) ++ """ ++ else: ++ result = cls.from_json(reply['response']) ++ ++ return result ++ return wrapper ++ return decorator ++ ++ ++def makeFunc(cls, name, params, result, async=True): ++ INDENT = " " ++ args = Args(params) ++ assignments = [] ++ toschema = args.PyToSchemaMapping() ++ for arg in args._get_arg_str(False, False): ++ assignments.append("{}_params[\'{}\'] = {}".format(INDENT, ++ toschema[arg], ++ arg)) ++ assignments = "\n".join(assignments) ++ res = retspec(result) ++ source = """ ++ ++@ReturnMapping({rettype}) ++{async}def {name}(self{argsep}{args}): ++ ''' ++{docstring} ++ Returns -> {res} ++ ''' ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='{cls.name}', request='{name}', version={cls.version}, params=_params) ++{assignments} ++ reply = {await}self.rpc(msg) ++ return reply ++ ++""" ++ ++ fsource = source.format(async="async " if async else "", ++ name=name, ++ argsep=", " if args else "", ++ args=args, ++ res=res, ++ rettype=result.__name__ if result else None, ++ docstring=textwrap.indent(args.get_doc(), INDENT), ++ cls=cls, ++ assignments=assignments, ++ await="await " if async else "") ++ ns = _getns() ++ exec(fsource, ns) ++ func = ns[name] ++ return func, fsource ++ ++ ++def buildMethods(cls, capture): ++ properties = cls.schema['properties'] ++ for methodname in sorted(properties): ++ method, source = _buildMethod(cls, methodname) ++ setattr(cls, methodname, method) ++ capture["{}Facade".format(cls.__name__)].write(source, depth=1) ++ ++ ++def _buildMethod(cls, name): ++ params = None ++ result = None ++ method = cls.schema['properties'][name] ++ if 'properties' in method: ++ prop = method['properties'] ++ spec = prop.get('Params') ++ if spec: ++ params = _types.get(spec['$ref']) ++ spec = prop.get('Result') ++ if spec: ++ if '$ref' in spec: ++ result = _types.get(spec['$ref']) ++ else: ++ result = SCHEMA_TO_PYTHON[spec['type']] ++ return makeFunc(cls, name, params, result) ++ ++ ++def buildFacade(schema): ++ cls = type(schema.name, (Type,), dict(name=schema.name, ++ version=schema.version, ++ schema=schema)) ++ source = """ ++class {name}Facade(Type): ++ name = '{name}' ++ version = {version} ++ schema = {schema} ++ """.format(name=schema.name, ++ version=schema.version, ++ schema=textwrap.indent(pprint.pformat(schema), " ")) ++ return cls, source ++ ++ ++class TypeEncoder(json.JSONEncoder): ++ def default(self, obj): ++ if isinstance(obj, Type): ++ return obj.serialize() ++ return json.JSONEncoder.default(self, obj) ++ ++ ++class Type: ++ def connect(self, connection): ++ self.connection = connection ++ ++ async def rpc(self, msg): ++ result = await self.connection.rpc(msg, encoder=TypeEncoder) ++ return result ++ ++ @classmethod ++ def from_json(cls, data): ++ if isinstance(data, cls): ++ return data ++ if isinstance(data, str): ++ try: ++ data = json.loads(data) ++ except json.JSONDecodeError: ++ raise ++ d = {} ++ for k, v in (data or {}).items(): ++ d[cls._toPy.get(k, k)] = v ++ ++ try: ++ return cls(**d) ++ except TypeError: ++ raise ++ ++ def serialize(self): ++ d = {} ++ for attr, tgt in self._toSchema.items(): ++ d[tgt] = getattr(self, attr) ++ return d ++ ++ def to_json(self): ++ return json.dumps(self.serialize()) ++ ++ ++class Schema(dict): ++ def __init__(self, schema): ++ self.name = schema['Name'] ++ self.version = schema['Version'] ++ self.update(schema['Schema']) ++ ++ @classmethod ++ def referenceName(cls, ref): ++ if ref.startswith("#/definitions/"): ++ ref = ref.rsplit("/", 1)[-1] ++ return ref ++ ++ def resolveDefinition(self, ref): ++ return self['definitions'][self.referenceName(ref)] ++ ++ def deref(self, prop, name): ++ if not isinstance(prop, dict): ++ raise TypeError(prop) ++ if "$ref" not in prop: ++ return prop ++ ++ target = self.resolveDefinition(prop["$ref"]) ++ return target ++ ++ def buildDefinitions(self): ++ # here we are building the types out ++ # anything in definitions is a type ++ # but these may contain references themselves ++ # so we dfs to the bottom and build upwards ++ # when a types is already in the registry ++ defs = self.get('definitions') ++ if not defs: ++ return ++ for d, data in defs.items(): ++ if d in _registry and not d in NAUGHTY_CLASSES: ++ continue ++ node = self.deref(data, d) ++ kind = node.get("type") ++ if kind == "object": ++ result = self.buildObject(node, d) ++ elif kind == "array": ++ pass ++ _registry.register(d, self.version, result) ++ # XXX: This makes sure that the type gets added to the global ++ # _types dict even if no other type in the schema has a ref ++ # to it. ++ getRefType(d) ++ ++ def buildObject(self, node, name=None, d=0): ++ # we don't need to build types recursively here ++ # they are all in definitions already ++ # we only want to include the type reference ++ # which we can derive from the name ++ struct = [] ++ add = struct.append ++ props = node.get("properties") ++ pprops = node.get("patternProperties") ++ if props: ++ # Sort these so the __init__ arg list for each Type remains ++ # consistently ordered across regens of client.py ++ for p in sorted(props): ++ prop = props[p] ++ if "$ref" in prop: ++ add((p, refType(prop))) ++ else: ++ kind = prop['type'] ++ if kind == "array": ++ add((p, self.buildArray(prop, d + 1))) ++ elif kind == "object": ++ struct.extend(self.buildObject(prop, p, d + 1)) ++ else: ++ add((p, objType(prop))) ++ if pprops: ++ if ".*" not in pprops: ++ raise ValueError( ++ "Cannot handle actual pattern in patternProperties %s" % ++ pprops) ++ pprop = pprops[".*"] ++ if "$ref" in pprop: ++ add((name, Mapping[str, refType(pprop)])) ++ return struct ++ ppkind = pprop["type"] ++ if ppkind == "array": ++ add((name, self.buildArray(pprop, d + 1))) ++ else: ++ add((name, Mapping[str, SCHEMA_TO_PYTHON[ppkind]])) ++ ++ if not struct and node.get('additionalProperties', False): ++ add((name, Mapping[str, SCHEMA_TO_PYTHON['object']])) ++ ++ return struct ++ ++ def buildArray(self, obj, d=0): ++ # return a sequence from an array in the schema ++ if "$ref" in obj: ++ return Sequence[refType(obj)] ++ else: ++ kind = obj.get("type") ++ if kind and kind == "array": ++ items = obj['items'] ++ return self.buildArray(items, d + 1) ++ else: ++ return Sequence[objType(obj)] ++ ++ ++def _getns(): ++ ns = {'Type': Type, ++ 'typing': typing, ++ 'ReturnMapping': ReturnMapping ++ } ++ # Copy our types into the globals of the method ++ for facade in _registry: ++ ns[facade] = _registry.getObj(facade) ++ return ns ++ ++ ++def make_factory(name): ++ if name in factories: ++ del factories[name] ++ factories[name].write("class {}(TypeFactory):\n pass\n\n".format(name)) ++ ++ ++def write_facades(captures, options): ++ """ ++ Write the Facades to the appropriate _client.py ++ ++ """ ++ for version in sorted(captures.keys()): ++ filename = "{}/_client{}.py".format(options.output_dir, version) ++ with open(filename, "w") as f: ++ f.write(HEADER) ++ f.write("from juju.client.facade import Type, ReturnMapping\n") ++ f.write("from juju.client._definitions import *\n\n") ++ for key in sorted( ++ [k for k in captures[version].keys() if "Facade" in k]): ++ print(captures[version][key], file=f) ++ ++ # Return the last (most recent) version for use in other routines. ++ return version ++ ++ ++def write_definitions(captures, options, version): ++ """ ++ Write auxillary (non versioned) classes to ++ _definitions.py The auxillary classes currently get ++ written redudantly into each capture object, so we can look in ++ one of them -- we just use the last one from the loop above. ++ ++ """ ++ with open("{}/_definitions.py".format(options.output_dir), "w") as f: ++ f.write(HEADER) ++ f.write("from juju.client.facade import Type, ReturnMapping\n\n") ++ for key in sorted( ++ [k for k in captures[version].keys() if "Facade" not in k]): ++ print(captures[version][key], file=f) ++ ++ ++def write_client(captures, options): ++ """ ++ Write the TypeFactory classes to _client.py, along with some ++ imports and tables so that we can look up versioned Facades. ++ ++ """ ++ with open("{}/_client.py".format(options.output_dir), "w") as f: ++ f.write(HEADER) ++ f.write("from juju.client._definitions import *\n\n") ++ clients = ", ".join("_client{}".format(v) for v in captures) ++ f.write("from juju.client import " + clients + "\n\n") ++ f.write(CLIENT_TABLE.format(clients=",\n ".join( ++ ['"{}": _client{}'.format(v, v) for v in captures]))) ++ f.write(LOOKUP_FACADE) ++ f.write(TYPE_FACTORY) ++ for key in sorted([k for k in factories.keys() if "Facade" in k]): ++ print(factories[key], file=f) ++ ++ ++def generate_facades(options): ++ captures = defaultdict(codegen.Capture) ++ schemas = {} ++ for p in sorted(glob(options.schema)): ++ if 'latest' in p: ++ juju_version = 'latest' ++ else: ++ try: ++ juju_version = re.search(JUJU_VERSION, p).group() ++ except AttributeError: ++ print("Cannot extract a juju version from {}".format(p)) ++ print("Schemas must include a juju version in the filename") ++ raise SystemExit(1) ++ ++ new_schemas = json.loads(Path(p).read_text("utf-8")) ++ schemas[juju_version] = [Schema(s) for s in new_schemas] ++ ++ # Build all of the auxillary (unversioned) classes ++ # TODO: get rid of some of the excess trips through loops in the ++ # called functions. ++ for juju_version in sorted(schemas.keys()): ++ for schema in schemas[juju_version]: ++ schema.buildDefinitions() ++ buildTypes(schema, captures[schema.version]) ++ ++ # Build the Facade classes ++ for juju_version in sorted(schemas.keys()): ++ for schema in schemas[juju_version]: ++ cls, source = buildFacade(schema) ++ cls_name = "{}Facade".format(schema.name) ++ ++ captures[schema.version].clear(cls_name) ++ # Make the factory class for _client.py ++ make_factory(cls_name) ++ # Make the actual class ++ captures[schema.version][cls_name].write(source) ++ # Build the methods for each Facade class. ++ buildMethods(cls, captures[schema.version]) ++ # Mark this Facade class as being done for this version -- ++ # helps mitigate some excessive looping. ++ CLASSES[schema.name] = cls ++ ++ return captures ++ ++def setup(): ++ parser = argparse.ArgumentParser() ++ parser.add_argument("-s", "--schema", default="juju/client/schemas*") ++ parser.add_argument("-o", "--output_dir", default="juju/client") ++ options = parser.parse_args() ++ return options ++ ++def main(): ++ options = setup() ++ ++ # Generate some text blobs ++ captures = generate_facades(options) ++ ++ # ... and write them out ++ last_version = write_facades(captures, options) ++ write_definitions(captures, options, last_version) ++ write_client(captures, options) ++ ++if __name__ == '__main__': ++ main() diff --cc modules/libjuju/juju/client/overrides.py index 0000000,0000000..f439adb new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/overrides.py @@@ -1,0 -1,0 +1,275 @@@ ++from collections import namedtuple ++import re ++ ++from .facade import ReturnMapping, Type, TypeEncoder ++from .import _client ++from .import _definitions ++ ++ ++__all__ = [ ++ 'Delta', ++ 'Number', ++ 'Binary', ++ 'ConfigValue', ++] ++ ++__patches__ = [ ++ 'ResourcesFacade', ++ 'AllWatcherFacade', ++] ++ ++ ++class Delta(Type): ++ """A single websocket delta. ++ ++ :ivar entity: The entity name, e.g. 'unit', 'application' ++ :vartype entity: str ++ ++ :ivar type: The delta type, e.g. 'add', 'change', 'remove' ++ :vartype type: str ++ ++ :ivar data: The raw delta data ++ :vartype data: dict ++ ++ NOTE: The 'data' variable above is being incorrectly cross-linked by a ++ Sphinx bug: https://github.com/sphinx-doc/sphinx/issues/2549 ++ ++ """ ++ _toSchema = {'deltas': 'deltas'} ++ _toPy = {'deltas': 'deltas'} ++ ++ def __init__(self, deltas=None): ++ """ ++ :param deltas: [str, str, object] ++ ++ """ ++ self.deltas = deltas ++ ++ Change = namedtuple('Change', 'entity type data') ++ change = Change(*self.deltas) ++ ++ self.entity = change.entity ++ self.type = change.type ++ self.data = change.data ++ ++ @classmethod ++ def from_json(cls, data): ++ return cls(deltas=data) ++ ++ ++class ResourcesFacade(Type): ++ """Patch parts of ResourcesFacade to make it work. ++ """ ++ ++ @ReturnMapping(_client.AddPendingResourcesResult) ++ async def AddPendingResources(self, application_tag, charm_url, resources): ++ """Fix the calling signature of AddPendingResources. ++ ++ The ResourcesFacade doesn't conform to the standard facade pattern in ++ the Juju source, which leads to the schemagened code not matching up ++ properly with the actual calling convention in the API. There is work ++ planned to fix this in Juju, but we have to work around it for now. ++ ++ application_tag : str ++ charm_url : str ++ resources : typing.Sequence<+T_co>[~CharmResource]<~CharmResource> ++ Returns -> typing.Union[_ForwardRef('ErrorResult'), ++ typing.Sequence<+T_co>[str]] ++ """ ++ # map input types to rpc msg ++ _params = dict() ++ msg = dict(type='Resources', ++ request='AddPendingResources', ++ version=1, ++ params=_params) ++ _params['tag'] = application_tag ++ _params['url'] = charm_url ++ _params['resources'] = resources ++ reply = await self.rpc(msg) ++ return reply ++ ++ ++class AllWatcherFacade(Type): ++ """ ++ Patch rpc method of allwatcher to add in 'id' stuff. ++ ++ """ ++ async def rpc(self, msg): ++ if not hasattr(self, 'Id'): ++ client = _client.ClientFacade.from_connection(self.connection) ++ ++ result = await client.WatchAll() ++ self.Id = result.watcher_id ++ ++ msg['Id'] = self.Id ++ result = await self.connection.rpc(msg, encoder=TypeEncoder) ++ return result ++ ++ ++class Number(_definitions.Number): ++ """ ++ This type represents a semver string. ++ ++ Because it is not standard JSON, the typical from_json parsing fails and ++ the parsing must be handled specially. ++ ++ See https://github.com/juju/version for more info. ++ """ ++ numberPat = re.compile(r'^(\d{1,9})\.(\d{1,9})(?:\.|-([a-z]+))(\d{1,9})(\.\d{1,9})?$') # noqa ++ ++ def __init__(self, major=None, minor=None, patch=None, tag=None, ++ build=None, **unknown_fields): ++ ''' ++ major : int ++ minor : int ++ patch : int ++ tag : str ++ build : int ++ ''' ++ self.major = int(major or '0') ++ self.minor = int(minor or '0') ++ self.patch = int(patch or '0') ++ self.tag = tag or '' ++ self.build = int(build or '0') ++ ++ def __repr__(self): ++ return ''.format( ++ self.major, self.minor, self.patch, self.tag, self.build) ++ ++ def __str__(self): ++ return self.serialize() ++ ++ def __eq__(self, other): ++ return ( ++ isinstance(other, type(self)) and ++ other.major == self.major and ++ other.minor == self.minor and ++ other.tag == self.tag and ++ other.patch == self.patch and ++ other.build == self.build) ++ ++ @classmethod ++ def from_json(cls, data): ++ parsed = None ++ if isinstance(data, cls): ++ return data ++ elif data is None: ++ return cls() ++ elif isinstance(data, dict): ++ parsed = data ++ elif isinstance(data, str): ++ match = cls.numberPat.match(data) ++ if match: ++ parsed = { ++ 'major': match.group(1), ++ 'minor': match.group(2), ++ 'tag': match.group(3), ++ 'patch': match.group(4), ++ 'build': (match.group(5)[1:] if match.group(5) ++ else 0), ++ } ++ if not parsed: ++ raise TypeError('Unable to parse Number version string: ' ++ '{}'.format(data)) ++ d = {} ++ for k, v in parsed.items(): ++ d[cls._toPy.get(k, k)] = v ++ ++ return cls(**d) ++ ++ def serialize(self): ++ s = "" ++ if not self.tag: ++ s = "{}.{}.{}".format(self.major, self.minor, self.patch) ++ else: ++ s = "{}.{}-{}{}".format(self.major, self.minor, self.tag, ++ self.patch) ++ if self.build: ++ s = "{}.{}".format(s, self.build) ++ return s ++ ++ def to_json(self): ++ return self.serialize() ++ ++ ++class Binary(_definitions.Binary): ++ """ ++ This type represents a semver string with additional series and arch info. ++ ++ Because it is not standard JSON, the typical from_json parsing fails and ++ the parsing must be handled specially. ++ ++ See https://github.com/juju/version for more info. ++ """ ++ binaryPat = re.compile(r'^(\d{1,9})\.(\d{1,9})(?:\.|-([a-z]+))(\d{1,9})(\.\d{1,9})?-([^-]+)-([^-]+)$') # noqa ++ ++ def __init__(self, number=None, series=None, arch=None, **unknown_fields): ++ ''' ++ number : Number ++ series : str ++ arch : str ++ ''' ++ self.number = Number.from_json(number) ++ self.series = series ++ self.arch = arch ++ ++ def __repr__(self): ++ return ''.format( ++ self.number, self.series, self.arch) ++ ++ def __str__(self): ++ return self.serialize() ++ ++ def __eq__(self, other): ++ return ( ++ isinstance(other, type(self)) and ++ other.number == self.number and ++ other.series == self.series and ++ other.arch == self.arch) ++ ++ @classmethod ++ def from_json(cls, data): ++ parsed = None ++ if isinstance(data, cls): ++ return data ++ elif data is None: ++ return cls() ++ elif isinstance(data, dict): ++ parsed = data ++ elif isinstance(data, str): ++ match = cls.binaryPat.match(data) ++ if match: ++ parsed = { ++ 'number': { ++ 'major': match.group(1), ++ 'minor': match.group(2), ++ 'tag': match.group(3), ++ 'patch': match.group(4), ++ 'build': (match.group(5)[1:] if match.group(5) ++ else 0), ++ }, ++ 'series': match.group(6), ++ 'arch': match.group(7), ++ } ++ if parsed is None: ++ raise TypeError('Unable to parse Binary version string: ' ++ '{}'.format(data)) ++ d = {} ++ for k, v in parsed.items(): ++ d[cls._toPy.get(k, k)] = v ++ ++ return cls(**d) ++ ++ def serialize(self): ++ return "{}-{}-{}".format(self.number.serialize(), ++ self.series, self.arch) ++ ++ def to_json(self): ++ return self.serialize() ++ ++ ++class ConfigValue(_definitions.ConfigValue): ++ def __repr__(self): ++ return '<{} source={} value={}>'.format(type(self).__name__, ++ repr(self.source), ++ repr(self.value)) diff --cc modules/libjuju/juju/client/runner.py index 0000000,0000000..61f2963 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/runner.py @@@ -1,0 -1,0 +1,28 @@@ ++ ++ ++ ++class AsyncRunner: ++ async def __call__(self, facade_method, *args, **kwargs): ++ await self.connection.rpc(facade_method(*args, **kwargs)) ++ ++ ++class ThreadedRunner: ++ pass ++ ++# Methods are descriptors?? ++# get is called with params ++# set gets called with the result? ++# This could let us fake the protocol we want ++# while decoupling the protocol from the RPC and the IO/Process context ++ ++# The problem is leaking the runtime impl details to the top levels of the API with ++# async def ++# By handling the Marshal/Unmarshal side of RPC as a protocol we can leave the RPC running to a specific ++# delegate without altering the method signatures. ++# This still isn't quite right though as async is co-op multitasking and the methods still need to know ++# not to block or they will pause other execution ++ ++ ++ ++ ++ diff --cc modules/libjuju/juju/client/schemas-juju-2.0.0.json index 0000000,0000000..c53a541 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.0.0.json @@@ -1,0 -1,0 +1,24533 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "ip-addresses", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "migration": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EnvListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EnvListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EnvListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "EnvListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.0.1.json index 0000000,0000000..69db493 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.0.1.json @@@ -1,0 -1,0 +1,24799 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationRelationsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ApplicationRelationsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "ApplicationRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationChange" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationRelationsWatchResult": { ++ "type": "object", ++ "properties": { ++ "ApplicationRelationsWatcherId": { ++ "type": "string" ++ }, ++ "changes": { ++ "$ref": "#/definitions/ApplicationRelationsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ApplicationRelationsWatcherId" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationChange": { ++ "type": "object", ++ "properties": { ++ "changedunits": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RelationUnitChange" ++ } ++ } ++ }, ++ "departedunits": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "ip-addresses", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "migration": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EnvListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EnvListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EnvListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "EnvListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.0.2.json index 0000000,0000000..69db493 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.0.2.json @@@ -1,0 -1,0 +1,24799 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationRelationsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ApplicationRelationsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "ApplicationRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationChange" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationRelationsWatchResult": { ++ "type": "object", ++ "properties": { ++ "ApplicationRelationsWatcherId": { ++ "type": "string" ++ }, ++ "changes": { ++ "$ref": "#/definitions/ApplicationRelationsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ApplicationRelationsWatcherId" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationChange": { ++ "type": "object", ++ "properties": { ++ "changedunits": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RelationUnitChange" ++ } ++ } ++ }, ++ "departedunits": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "ip-addresses", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "migration": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EnvListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EnvListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EnvListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "EnvListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.0.3.json index 0000000,0000000..69db493 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.0.3.json @@@ -1,0 -1,0 +1,24799 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationRelationsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ApplicationRelationsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "ApplicationRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationChange" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationRelationsWatchResult": { ++ "type": "object", ++ "properties": { ++ "ApplicationRelationsWatcherId": { ++ "type": "string" ++ }, ++ "changes": { ++ "$ref": "#/definitions/ApplicationRelationsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ApplicationRelationsWatcherId" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationChange": { ++ "type": "object", ++ "properties": { ++ "changedunits": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RelationUnitChange" ++ } ++ } ++ }, ++ "departedunits": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "ip-addresses", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "migration": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EnvListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EnvListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EnvListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "EnvListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.1.0.json index 0000000,0000000..15f068f new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.1.0.json @@@ -1,0 -1,0 +1,25652 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "ip-addresses", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "migration": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EnvListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EnvListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EnvListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "EnvListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RemoteApplicationWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RemoteApplicationWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RemoteApplicationChange": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "$ref": "#/definitions/RemoteRelationsChange" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "life", ++ "relations" ++ ] ++ }, ++ "RemoteApplicationWatchResult": { ++ "type": "object", ++ "properties": { ++ "change": { ++ "$ref": "#/definitions/RemoteApplicationChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "RemoteEntityId": { ++ "type": "object", ++ "properties": { ++ "model-uuid": { ++ "type": "string" ++ }, ++ "token": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-uuid", ++ "token" ++ ] ++ }, ++ "RemoteRelationChange": { ++ "type": "object", ++ "properties": { ++ "changed-units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteRelationUnitChange" ++ } ++ } ++ }, ++ "departed-units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RemoteRelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "unit-id": { ++ "$ref": "#/definitions/RemoteEntityId" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-id" ++ ] ++ }, ++ "RemoteRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteRelationChange" ++ } ++ }, ++ "initial": { ++ "type": "boolean" ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "initial" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RemoteRelationsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RemoteRelationsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RemoteEntityId": { ++ "type": "object", ++ "properties": { ++ "model-uuid": { ++ "type": "string" ++ }, ++ "token": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-uuid", ++ "token" ++ ] ++ }, ++ "RemoteRelationChange": { ++ "type": "object", ++ "properties": { ++ "changed-units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteRelationUnitChange" ++ } ++ } ++ }, ++ "departed-units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RemoteRelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "unit-id": { ++ "$ref": "#/definitions/RemoteEntityId" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-id" ++ ] ++ }, ++ "RemoteRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteRelationChange" ++ } ++ }, ++ "initial": { ++ "type": "boolean" ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "initial" ++ ] ++ }, ++ "RemoteRelationsWatchResult": { ++ "type": "object", ++ "properties": { ++ "RemoteRelationsWatcherId": { ++ "type": "string" ++ }, ++ "change": { ++ "$ref": "#/definitions/RemoteRelationsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "RemoteRelationsWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.1.1.json index 0000000,0000000..474b204 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.1.1.json @@@ -1,0 -1,0 +1,25730 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "ip-addresses", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "migration": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EnvListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EnvListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EnvListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "EnvListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RemoteApplicationWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RemoteApplicationWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RemoteApplicationChange": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "$ref": "#/definitions/RemoteRelationsChange" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "life", ++ "relations" ++ ] ++ }, ++ "RemoteApplicationWatchResult": { ++ "type": "object", ++ "properties": { ++ "change": { ++ "$ref": "#/definitions/RemoteApplicationChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "RemoteEntityId": { ++ "type": "object", ++ "properties": { ++ "model-uuid": { ++ "type": "string" ++ }, ++ "token": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-uuid", ++ "token" ++ ] ++ }, ++ "RemoteRelationChange": { ++ "type": "object", ++ "properties": { ++ "changed-units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteRelationUnitChange" ++ } ++ } ++ }, ++ "departed-units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RemoteRelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "unit-id": { ++ "$ref": "#/definitions/RemoteEntityId" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-id" ++ ] ++ }, ++ "RemoteRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteRelationChange" ++ } ++ }, ++ "initial": { ++ "type": "boolean" ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "initial" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RemoteRelationsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RemoteRelationsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RemoteEntityId": { ++ "type": "object", ++ "properties": { ++ "model-uuid": { ++ "type": "string" ++ }, ++ "token": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-uuid", ++ "token" ++ ] ++ }, ++ "RemoteRelationChange": { ++ "type": "object", ++ "properties": { ++ "changed-units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteRelationUnitChange" ++ } ++ } ++ }, ++ "departed-units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RemoteRelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "unit-id": { ++ "$ref": "#/definitions/RemoteEntityId" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-id" ++ ] ++ }, ++ "RemoteRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteRelationChange" ++ } ++ }, ++ "initial": { ++ "type": "boolean" ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "initial" ++ ] ++ }, ++ "RemoteRelationsWatchResult": { ++ "type": "object", ++ "properties": { ++ "RemoteRelationsWatcherId": { ++ "type": "string" ++ }, ++ "change": { ++ "$ref": "#/definitions/RemoteRelationsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "RemoteRelationsWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.1.2.json index 0000000,0000000..474b204 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.1.2.json @@@ -1,0 -1,0 +1,25730 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "ip-addresses", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "migration": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EnvListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EnvListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EnvListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "EnvListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RemoteApplicationWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RemoteApplicationWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RemoteApplicationChange": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "$ref": "#/definitions/RemoteRelationsChange" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "life", ++ "relations" ++ ] ++ }, ++ "RemoteApplicationWatchResult": { ++ "type": "object", ++ "properties": { ++ "change": { ++ "$ref": "#/definitions/RemoteApplicationChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "RemoteEntityId": { ++ "type": "object", ++ "properties": { ++ "model-uuid": { ++ "type": "string" ++ }, ++ "token": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-uuid", ++ "token" ++ ] ++ }, ++ "RemoteRelationChange": { ++ "type": "object", ++ "properties": { ++ "changed-units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteRelationUnitChange" ++ } ++ } ++ }, ++ "departed-units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RemoteRelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "unit-id": { ++ "$ref": "#/definitions/RemoteEntityId" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-id" ++ ] ++ }, ++ "RemoteRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteRelationChange" ++ } ++ }, ++ "initial": { ++ "type": "boolean" ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "initial" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RemoteRelationsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RemoteRelationsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RemoteEntityId": { ++ "type": "object", ++ "properties": { ++ "model-uuid": { ++ "type": "string" ++ }, ++ "token": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-uuid", ++ "token" ++ ] ++ }, ++ "RemoteRelationChange": { ++ "type": "object", ++ "properties": { ++ "changed-units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteRelationUnitChange" ++ } ++ } ++ }, ++ "departed-units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life" ++ ] ++ }, ++ "RemoteRelationUnitChange": { ++ "type": "object", ++ "properties": { ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "unit-id": { ++ "$ref": "#/definitions/RemoteEntityId" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-id" ++ ] ++ }, ++ "RemoteRelationsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteRelationChange" ++ } ++ }, ++ "initial": { ++ "type": "boolean" ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "initial" ++ ] ++ }, ++ "RemoteRelationsWatchResult": { ++ "type": "object", ++ "properties": { ++ "RemoteRelationsWatcherId": { ++ "type": "string" ++ }, ++ "change": { ++ "$ref": "#/definitions/RemoteRelationsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "RemoteRelationsWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.2-alpha1.json index 0000000,0000000..8fa5071 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.2-alpha1.json @@@ -1,0 -1,0 +1,25974 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Consume": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ConsumeApplicationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConsumeApplicationResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyApplication": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyApplicationResults" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyUnitResults" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RemoteApplicationInfoResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationURLs": { ++ "type": "object", ++ "properties": { ++ "application-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "ConsumeApplicationArg": { ++ "type": "object", ++ "properties": { ++ "application-alias": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url" ++ ] ++ }, ++ "ConsumeApplicationArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationArg" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "local-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "DestroyApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "DestroyUnitInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyUnitInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyUnitResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "application-url": { ++ "type": "string" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "icon-url-path": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "source-model-label": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "name", ++ "description", ++ "application-url", ++ "endpoints", ++ "icon-url-path" ++ ] ++ }, ++ "RemoteApplicationInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RemoteApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RemoteApplicationInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteApplicationInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "network-interfaces": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/NetworkInterface" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "model-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version", ++ "model-status" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NetworkInterface": { ++ "type": "object", ++ "properties": { ++ "dns-nameservers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway": { ++ "type": "string" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "is-up": { ++ "type": "boolean" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "space": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ip-addresses", ++ "mac-address", ++ "is-up" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "exclude": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta", ++ "exclude" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "DestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "ForceDestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachineInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyMachineInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyMachineResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PayloadListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "PayloadListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetPayloadStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpPayloadArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpPayloadArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetPayloadStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetPayloadStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetPayloadStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "Resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Attach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Detach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "FilesystemAttachmentInfo": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "FilesystemAttachmentInfo" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "VolumeAttachmentInfo": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "VolumeAttachmentInfo" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.2-beta1.json index 0000000,0000000..9bd941b new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.2-beta1.json @@@ -1,0 -1,0 +1,26135 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Consume": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ConsumeApplicationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConsumeApplicationResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyApplication": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyApplicationResults" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyUnitResults" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RemoteApplicationInfoResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationURLs": { ++ "type": "object", ++ "properties": { ++ "application-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "ConsumeApplicationArg": { ++ "type": "object", ++ "properties": { ++ "application-alias": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url" ++ ] ++ }, ++ "ConsumeApplicationArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationArg" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "local-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "DestroyApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "DestroyUnitInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyUnitInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyUnitResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "application-url": { ++ "type": "string" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "icon-url-path": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "source-model-label": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "name", ++ "description", ++ "application-url", ++ "endpoints", ++ "icon-url-path" ++ ] ++ }, ++ "RemoteApplicationInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RemoteApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RemoteApplicationInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteApplicationInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "network-interfaces": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/NetworkInterface" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "level": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "creds" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "meter-status": { ++ "$ref": "#/definitions/MeterStatus" ++ }, ++ "model-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version", ++ "model-status", ++ "meter-status" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NetworkInterface": { ++ "type": "object", ++ "properties": { ++ "dns-nameservers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway": { ++ "type": "string" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "is-up": { ++ "type": "boolean" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "space": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ip-addresses", ++ "mac-address", ++ "is-up" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "exclude": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta", ++ "exclude" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "DestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "ForceDestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachineInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyMachineInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyMachineResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddJujuMachineMetrics": { ++ "type": "object" ++ }, ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "level": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "creds" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PayloadListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "PayloadListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetPayloadStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpPayloadArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpPayloadArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetPayloadStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetPayloadStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetPayloadStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListUnitResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListUnitResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "UnitResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "UnitResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Attach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Detach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "FilesystemAttachmentInfo": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "FilesystemAttachmentInfo" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "VolumeAttachmentInfo": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "VolumeAttachmentInfo" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 5, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.2-beta2.json index 0000000,0000000..4b141fd new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.2-beta2.json @@@ -1,0 -1,0 +1,26150 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Consume": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ConsumeApplicationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConsumeApplicationResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyApplication": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyApplicationResults" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyUnitResults" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RemoteApplicationInfoResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationURLs": { ++ "type": "object", ++ "properties": { ++ "application-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "ConsumeApplicationArg": { ++ "type": "object", ++ "properties": { ++ "application-alias": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url" ++ ] ++ }, ++ "ConsumeApplicationArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationArg" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "local-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "DestroyApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "DestroyUnitInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyUnitInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyUnitResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "application-url": { ++ "type": "string" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "icon-url-path": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "source-model-label": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "name", ++ "description", ++ "application-url", ++ "endpoints", ++ "icon-url-path" ++ ] ++ }, ++ "RemoteApplicationInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RemoteApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RemoteApplicationInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteApplicationInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "network-interfaces": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/NetworkInterface" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "level": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "creds" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "meter-status": { ++ "$ref": "#/definitions/MeterStatus" ++ }, ++ "model-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version", ++ "model-status", ++ "meter-status" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NetworkInterface": { ++ "type": "object", ++ "properties": { ++ "dns-nameservers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway": { ++ "type": "string" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "is-up": { ++ "type": "boolean" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "space": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ip-addresses", ++ "mac-address", ++ "is-up" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "exclude": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta", ++ "exclude" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "DestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "ForceDestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachineInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyMachineInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyMachineResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddJujuMachineMetrics": { ++ "type": "object" ++ }, ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "external-control": { ++ "type": "boolean" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "skip-initial-prechecks": { ++ "type": "boolean" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info", ++ "external-control", ++ "skip-initial-prechecks" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "external-control": { ++ "type": "boolean" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "external-control", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "level": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "creds" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "provider-type", ++ "default-series", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "status", ++ "users", ++ "machines" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PayloadListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "PayloadListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetPayloadStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpPayloadArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpPayloadArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetPayloadStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetPayloadStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetPayloadStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListUnitResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListUnitResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "UnitResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "UnitResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Attach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Detach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "FilesystemAttachmentInfo": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "FilesystemAttachmentInfo" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "VolumeAttachmentInfo": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "VolumeAttachmentInfo" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 5, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnitsNetworkConfig" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitNetworkConfigResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchApplicationRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "binding-name": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "binding-name" ++ ] ++ }, ++ "UnitNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "UnitNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "UnitsNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitNetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.2-rc1.json index 0000000,0000000..17e841a new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.2-rc1.json @@@ -1,0 -1,0 +1,26295 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 4, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Consume": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ConsumeApplicationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConsumeApplicationResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyApplication": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyApplicationResults" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyUnitResults" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RemoteApplicationInfoResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationURLs": { ++ "type": "object", ++ "properties": { ++ "application-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "ConsumeApplicationArg": { ++ "type": "object", ++ "properties": { ++ "application-alias": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url" ++ ] ++ }, ++ "ConsumeApplicationArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationArg" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "local-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConsumeApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "DestroyApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "DestroyUnitInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyUnitInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyUnitResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "RemoteApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "application-url": { ++ "type": "string" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "icon-url-path": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "source-model-label": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "name", ++ "description", ++ "application-url", ++ "endpoints", ++ "icon-url-path" ++ ] ++ }, ++ "RemoteApplicationInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RemoteApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RemoteApplicationInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteApplicationInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "network-interfaces": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/NetworkInterface" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "sla": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "users", ++ "machines", ++ "sla", ++ "agent-version" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "ModelSLAInfo": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ModelSLAInfo", ++ "creds" ++ ] ++ }, ++ "ModelSLAInfo": { ++ "type": "object", ++ "properties": { ++ "level": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "owner" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "meter-status": { ++ "$ref": "#/definitions/MeterStatus" ++ }, ++ "model-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "sla": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version", ++ "model-status", ++ "meter-status", ++ "sla" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NetworkInterface": { ++ "type": "object", ++ "properties": { ++ "dns-nameservers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway": { ++ "type": "string" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "is-up": { ++ "type": "boolean" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "space": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ip-addresses", ++ "mac-address", ++ "is-up" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "exclude": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta", ++ "exclude" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiscoverSpaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DiscoverSpacesResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "DiscoverSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ProviderSpace": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider-id", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ }, ++ "WWN": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "WWN", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "DestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "ForceDestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachineInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyMachineInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyMachineResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddJujuMachineMetrics": { ++ "type": "object" ++ }, ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "ModelSLAInfo": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ModelSLAInfo", ++ "creds" ++ ] ++ }, ++ "ModelSLAInfo": { ++ "type": "object", ++ "properties": { ++ "level": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "owner" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "sla": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "users", ++ "machines", ++ "sla", ++ "agent-version" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSLAInfo": { ++ "type": "object", ++ "properties": { ++ "level": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "owner" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PayloadListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "PayloadListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetPayloadStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpPayloadArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpPayloadArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetPayloadStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetPayloadStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetPayloadStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "AutoNoProxy": { ++ "type": "string" ++ }, ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy", ++ "AutoNoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "wwn": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListUnitResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListUnitResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "UnitResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "UnitResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Attach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Detach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "FilesystemAttachmentInfo": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "FilesystemAttachmentInfo" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "VolumeAttachmentInfo": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "VolumeAttachmentInfo" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "wwn": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ }, ++ "WWN": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "WWN", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "wwn": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 5, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/NetworkInfoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NetworkInfoResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InterfaceAddress": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "cidr" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkInfo": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InterfaceAddress" ++ } ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mac-address", ++ "interface-name", ++ "addresses" ++ ] ++ }, ++ "NetworkInfoParams": { ++ "type": "object", ++ "properties": { ++ "bindings": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "bindings" ++ ] ++ }, ++ "NetworkInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "network-info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "network-info" ++ ] ++ }, ++ "NetworkInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/NetworkInfoResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-2.3-alpha1.json index 0000000,0000000..e59c105 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-2.3-alpha1.json @@@ -1,0 -1,0 +1,26050 @@@ ++[ ++ { ++ "Name": "Action", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "ApplicationsCharmsActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationsCharmActionsResults" ++ } ++ } ++ }, ++ "Cancel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "Enqueue": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Actions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "FindActionTagsByPrefix": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindTags" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindTagsResults" ++ } ++ } ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindActionsByNames" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByNames" ++ } ++ } ++ }, ++ "ListAll": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListCompleted": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListPending": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "ListRunning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "Run": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "RunOnAllMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RunParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Action" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByName": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByNames": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByName" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationCharmActionsResult": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ActionSpec" ++ } ++ } ++ }, ++ "application-tag": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ApplicationsCharmActionsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationCharmActionsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindActionsByNames": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FindTags": { ++ "type": "object", ++ "properties": { ++ "prefixes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "prefixes" ++ ] ++ }, ++ "FindTagsResults": { ++ "type": "object", ++ "properties": { ++ "matches": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "matches" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RunParams": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "commands": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "timeout": { ++ "type": "integer" ++ }, ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "commands", ++ "timeout" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Agent", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetEntities": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AgentGetEntitiesResults" ++ } ++ } ++ }, ++ "IsMaster": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/IsMasterResult" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StateServingInfo" ++ } ++ } ++ }, ++ "WatchCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AgentGetEntitiesResult": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "jobs", ++ "container-type" ++ ] ++ }, ++ "AgentGetEntitiesResults": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AgentGetEntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "IsMasterResult": { ++ "type": "object", ++ "properties": { ++ "master": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "master" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StateServingInfo": { ++ "type": "object", ++ "properties": { ++ "api-port": { ++ "type": "integer" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "cert": { ++ "type": "string" ++ }, ++ "private-key": { ++ "type": "string" ++ }, ++ "shared-secret": { ++ "type": "string" ++ }, ++ "state-port": { ++ "type": "integer" ++ }, ++ "system-identity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "api-port", ++ "state-port", ++ "cert", ++ "private-key", ++ "ca-private-key", ++ "shared-secret", ++ "system-identity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AgentTools", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateToolsAvailable": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllModelWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "AllWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherNextResults" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "AllWatcherNextResults": { ++ "type": "object", ++ "properties": { ++ "deltas": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Delta" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "deltas" ++ ] ++ }, ++ "Delta": { ++ "type": "object", ++ "properties": { ++ "entity": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "removed": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "removed", ++ "entity" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Annotations", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AnnotationsGetResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AnnotationsSet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AnnotationsGetResult": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "AnnotationsGetResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AnnotationsGetResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AnnotationsSet": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityAnnotations" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "annotations" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityAnnotations": { ++ "type": "object", ++ "properties": { ++ "annotations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "entity": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity", ++ "annotations" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Application", ++ "Version": 5, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddRelation" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddRelationResults" ++ } ++ } ++ }, ++ "AddUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddApplicationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddApplicationUnitsResults" ++ } ++ } ++ }, ++ "CharmRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationCharmRelations" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationCharmRelationsResults" ++ } ++ } ++ }, ++ "Consume": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ConsumeApplicationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Deploy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationsDeploy" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationDestroy" ++ } ++ } ++ }, ++ "DestroyApplication": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyApplicationResults" ++ } ++ } ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyRelation" ++ } ++ } ++ }, ++ "DestroyUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyUnitResults" ++ } ++ } ++ }, ++ "DestroyUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyApplicationUnits" ++ } ++ } ++ }, ++ "Expose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationExpose" ++ } ++ } ++ }, ++ "Get": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationGetResults" ++ } ++ } ++ }, ++ "GetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationGet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "GetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/GetApplicationConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "Set": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSet" ++ } ++ } ++ }, ++ "SetCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationSetCharm" ++ } ++ } ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationMetricCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Unexpose": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnexpose" ++ } ++ } ++ }, ++ "Unset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUnset" ++ } ++ } ++ }, ++ "Update": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationUpdate" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "attach-storage": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "num-units", ++ "placement" ++ ] ++ }, ++ "AddApplicationUnitsResults": { ++ "type": "object", ++ "properties": { ++ "units": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "units" ++ ] ++ }, ++ "AddRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "AddRelationResults": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "ApplicationCharmRelations": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationCharmRelationsResults": { ++ "type": "object", ++ "properties": { ++ "charm-relations": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-relations" ++ ] ++ }, ++ "ApplicationDeploy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "attach-storage": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-yaml": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "num-units": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Placement" ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Constraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "series", ++ "charm-url", ++ "channel", ++ "num-units", ++ "config-yaml", ++ "constraints" ++ ] ++ }, ++ "ApplicationDestroy": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationExpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationGetResults": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm", ++ "config", ++ "constraints", ++ "series" ++ ] ++ }, ++ "ApplicationMetricCredential": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "metrics-credentials": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "metrics-credentials" ++ ] ++ }, ++ "ApplicationMetricCredentials": { ++ "type": "object", ++ "properties": { ++ "creds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationMetricCredential" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "creds" ++ ] ++ }, ++ "ApplicationOffer": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "application-description": { ++ "type": "string" ++ }, ++ "bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "offer-name": { ++ "type": "string" ++ }, ++ "offer-url": { ++ "type": "string" ++ }, ++ "source-model-tag": { ++ "type": "string" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteSpace" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "source-model-tag", ++ "offer-url", ++ "offer-name", ++ "application-description", ++ "endpoints", ++ "spaces", ++ "bindings", ++ "access" ++ ] ++ }, ++ "ApplicationSet": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationSetCharm": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "channel": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "config-settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "config-settings-yaml": { ++ "type": "string" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "force-units": { ++ "type": "boolean" ++ }, ++ "resource-ids": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "storage-constraints": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageConstraints" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "channel", ++ "force-units", ++ "force-series" ++ ] ++ }, ++ "ApplicationUnexpose": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "ApplicationUnset": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "options": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "options" ++ ] ++ }, ++ "ApplicationUpdate": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "charm-url": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "force-charm-url": { ++ "type": "boolean" ++ }, ++ "force-series": { ++ "type": "boolean" ++ }, ++ "min-units": { ++ "type": "integer" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "settings-yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "charm-url", ++ "force-charm-url", ++ "force-series", ++ "settings-yaml" ++ ] ++ }, ++ "ApplicationsDeploy": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationDeploy" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "applications" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "ConsumeApplicationArg": { ++ "type": "object", ++ "properties": { ++ "ApplicationOffer": { ++ "$ref": "#/definitions/ApplicationOffer" ++ }, ++ "application-alias": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ApplicationOffer" ++ ] ++ }, ++ "ConsumeApplicationArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConsumeApplicationArg" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyApplicationInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyApplicationResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyApplicationUnits": { ++ "type": "object", ++ "properties": { ++ "unit-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-names" ++ ] ++ }, ++ "DestroyRelation": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "endpoints" ++ ] ++ }, ++ "DestroyUnitInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyUnitInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyUnitResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyUnitResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetApplicationConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "RemoteSpace": { ++ "type": "object", ++ "properties": { ++ "cloud-type": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider-attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-type", ++ "name", ++ "provider-id", ++ "provider-attributes", ++ "subnets" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ApplicationScaler", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Rescale": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Backups", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Create": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "FinishRestore": { ++ "type": "object" ++ }, ++ "Info": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsInfoArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BackupsListResult" ++ } ++ } ++ }, ++ "PrepareRestore": { ++ "type": "object" ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BackupsRemoveArgs" ++ } ++ } ++ }, ++ "Restore": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RestoreArgs" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BackupsCreateArgs": { ++ "type": "object", ++ "properties": { ++ "notes": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "notes" ++ ] ++ }, ++ "BackupsInfoArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "BackupsListArgs": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "BackupsListResult": { ++ "type": "object", ++ "properties": { ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BackupsMetadataResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "BackupsMetadataResult": { ++ "type": "object", ++ "properties": { ++ "ca-cert": { ++ "type": "string" ++ }, ++ "ca-private-key": { ++ "type": "string" ++ }, ++ "checksum": { ++ "type": "string" ++ }, ++ "checksum-format": { ++ "type": "string" ++ }, ++ "finished": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "hostname": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "model": { ++ "type": "string" ++ }, ++ "notes": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "stored": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "checksum", ++ "checksum-format", ++ "size", ++ "stored", ++ "started", ++ "finished", ++ "notes", ++ "model", ++ "machine", ++ "hostname", ++ "version", ++ "series", ++ "ca-cert", ++ "ca-private-key" ++ ] ++ }, ++ "BackupsRemoveArgs": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RestoreArgs": { ++ "type": "object", ++ "properties": { ++ "backup-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "backup-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Block", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BlockResults" ++ } ++ } ++ }, ++ "SwitchBlockOff": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "SwitchBlockOn": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BlockSwitchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Block": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "tag", ++ "type" ++ ] ++ }, ++ "BlockResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Block" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BlockSwitchParams": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Bundle", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "CharmRevisionUpdater", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "UpdateLatestRevisions": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Charms", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmInfo" ++ } ++ } ++ }, ++ "IsMetered": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IsMeteredResult" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmsList" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CharmsListResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmActionSpec": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "params": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "description", ++ "params" ++ ] ++ }, ++ "CharmActions": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmActionSpec" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CharmInfo": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "$ref": "#/definitions/CharmActions" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmOption" ++ } ++ } ++ }, ++ "meta": { ++ "$ref": "#/definitions/CharmMeta" ++ }, ++ "metrics": { ++ "$ref": "#/definitions/CharmMetrics" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "url", ++ "config" ++ ] ++ }, ++ "CharmMeta": { ++ "type": "object", ++ "properties": { ++ "categories": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "extra-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "min-juju-version": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "payload-classes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmPayloadClass" ++ } ++ } ++ }, ++ "peers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "provides": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "requires": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ } ++ }, ++ "resources": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmResourceMeta" ++ } ++ } ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "storage": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmStorage" ++ } ++ } ++ }, ++ "subordinate": { ++ "type": "boolean" ++ }, ++ "summary": { ++ "type": "string" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "terms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "summary", ++ "description", ++ "subordinate" ++ ] ++ }, ++ "CharmMetric": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "description" ++ ] ++ }, ++ "CharmMetrics": { ++ "type": "object", ++ "properties": { ++ "metrics": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/CharmMetric" ++ } ++ } ++ }, ++ "plan": { ++ "$ref": "#/definitions/CharmPlan" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metrics", ++ "plan" ++ ] ++ }, ++ "CharmOption": { ++ "type": "object", ++ "properties": { ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CharmPayloadClass": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type" ++ ] ++ }, ++ "CharmPlan": { ++ "type": "object", ++ "properties": { ++ "required": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "required" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmResourceMeta": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "description" ++ ] ++ }, ++ "CharmStorage": { ++ "type": "object", ++ "properties": { ++ "count-max": { ++ "type": "integer" ++ }, ++ "count-min": { ++ "type": "integer" ++ }, ++ "description": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "minimum-size": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "properties": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "shared": { ++ "type": "boolean" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "description", ++ "type", ++ "shared", ++ "read-only", ++ "count-min", ++ "count-max", ++ "minimum-size" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmsList": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "names" ++ ] ++ }, ++ "CharmsListResult": { ++ "type": "object", ++ "properties": { ++ "charm-urls": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm-urls" ++ ] ++ }, ++ "IsMeteredResult": { ++ "type": "object", ++ "properties": { ++ "metered": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "metered" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cleaner", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cleanup": { ++ "type": "object" ++ }, ++ "WatchCleanups": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Client", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "AbortCurrentUpgrade": { ++ "type": "object" ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharm" ++ } ++ } ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ } ++ } ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AddMachinesV2": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "AgentVersion": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AgentVersionResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyMachines" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FullStatus" ++ } ++ } ++ }, ++ "GetBundleChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/BundleChangesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BundleChangesResults" ++ } ++ } ++ }, ++ "GetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/GetConstraintsResults" ++ } ++ } ++ }, ++ "InjectMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelUserInfoResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PrivateAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PrivateAddressResults" ++ } ++ } ++ }, ++ "ProvisioningScript": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ProvisioningScriptParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningScriptResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PublicAddress" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PublicAddressResults" ++ } ++ } ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResolveCharms" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolveCharmResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Resolved" ++ } ++ } ++ }, ++ "RetryProvisioning": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelAgentVersion" ++ } ++ } ++ }, ++ "SetModelConstraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetConstraints" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ }, ++ "StatusHistory": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryRequests" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusHistoryResults" ++ } ++ } ++ }, ++ "WatchAll": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "AddCharm": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel" ++ ] ++ }, ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "AgentVersionResult": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "can-upgrade-to": { ++ "type": "string" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "exposed": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "meter-statuses": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MeterStatus" ++ } ++ } ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "subordinate-to": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "charm", ++ "series", ++ "exposed", ++ "life", ++ "relations", ++ "can-upgrade-to", ++ "subordinate-to", ++ "units", ++ "meter-statuses", ++ "status", ++ "workload-version" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BundleChange": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "method": { ++ "type": "string" ++ }, ++ "requires": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "method", ++ "args", ++ "requires" ++ ] ++ }, ++ "BundleChangesParams": { ++ "type": "object", ++ "properties": { ++ "yaml": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "yaml" ++ ] ++ }, ++ "BundleChangesResults": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BundleChange" ++ } ++ }, ++ "errors": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachines": { ++ "type": "object", ++ "properties": { ++ "force": { ++ "type": "boolean" ++ }, ++ "machine-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-names", ++ "force" ++ ] ++ }, ++ "DetailedStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "data", ++ "since", ++ "kind", ++ "version", ++ "life" ++ ] ++ }, ++ "EndpointStatus": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "subordinate": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "role", ++ "subordinate" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "FullStatus": { ++ "type": "object", ++ "properties": { ++ "applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ApplicationStatus" ++ } ++ } ++ }, ++ "machines": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "model": { ++ "$ref": "#/definitions/ModelStatusInfo" ++ }, ++ "relations": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationStatus" ++ } ++ }, ++ "remote-applications": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/RemoteApplicationStatus" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "machines", ++ "applications", ++ "remote-applications", ++ "relations" ++ ] ++ }, ++ "GetConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "History": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "statuses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statuses" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MachineStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "constraints": { ++ "type": "string" ++ }, ++ "containers": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/MachineStatus" ++ } ++ } ++ }, ++ "dns-name": { ++ "type": "string" ++ }, ++ "hardware": { ++ "type": "string" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "instance-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "network-interfaces": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/NetworkInterface" ++ } ++ } ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "instance-status", ++ "dns-name", ++ "instance-id", ++ "series", ++ "id", ++ "containers", ++ "constraints", ++ "hardware", ++ "jobs", ++ "has-vote", ++ "wants-vote" ++ ] ++ }, ++ "MeterStatus": { ++ "type": "object", ++ "properties": { ++ "color": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "color", ++ "message" ++ ] ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "sla": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "users", ++ "machines", ++ "sla", ++ "agent-version" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "ModelSLAInfo": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ModelSLAInfo", ++ "creds" ++ ] ++ }, ++ "ModelSLAInfo": { ++ "type": "object", ++ "properties": { ++ "level": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "owner" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelStatusInfo": { ++ "type": "object", ++ "properties": { ++ "available-version": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "meter-status": { ++ "$ref": "#/definitions/MeterStatus" ++ }, ++ "model-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "sla": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "cloud-tag", ++ "version", ++ "available-version", ++ "model-status", ++ "meter-status", ++ "sla" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModelUserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelUserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NetworkInterface": { ++ "type": "object", ++ "properties": { ++ "dns-nameservers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway": { ++ "type": "string" ++ }, ++ "ip-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "is-up": { ++ "type": "boolean" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "space": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ip-addresses", ++ "mac-address", ++ "is-up" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PrivateAddressResults": { ++ "type": "object", ++ "properties": { ++ "private-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "private-address" ++ ] ++ }, ++ "ProvisioningScriptParams": { ++ "type": "object", ++ "properties": { ++ "data-dir": { ++ "type": "string" ++ }, ++ "disable-package-commands": { ++ "type": "boolean" ++ }, ++ "machine-id": { ++ "type": "string" ++ }, ++ "nonce": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-id", ++ "nonce", ++ "data-dir", ++ "disable-package-commands" ++ ] ++ }, ++ "ProvisioningScriptResult": { ++ "type": "object", ++ "properties": { ++ "script": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "script" ++ ] ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "PublicAddressResults": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "public-address" ++ ] ++ }, ++ "RelationStatus": { ++ "type": "object", ++ "properties": { ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EndpointStatus" ++ } ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "interface": { ++ "type": "string" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "key", ++ "interface", ++ "scope", ++ "endpoints" ++ ] ++ }, ++ "RemoteApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "application-url": { ++ "type": "string" ++ }, ++ "endpoints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RemoteEndpoint" ++ } ++ }, ++ "err": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "relations": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/DetailedStatus" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-url", ++ "application-name", ++ "endpoints", ++ "life", ++ "relations", ++ "status" ++ ] ++ }, ++ "RemoteEndpoint": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "limit", ++ "scope" ++ ] ++ }, ++ "ResolveCharmResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ResolveCharmResults": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolveCharmResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ResolveCharms": { ++ "type": "object", ++ "properties": { ++ "references": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "references" ++ ] ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "retry": { ++ "type": "boolean" ++ }, ++ "unit-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-name", ++ "retry" ++ ] ++ }, ++ "SetConstraints": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "constraints" ++ ] ++ }, ++ "SetModelAgentVersion": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "StatusHistoryFilter": { ++ "type": "object", ++ "properties": { ++ "date": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "delta": { ++ "type": "integer" ++ }, ++ "exclude": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "size", ++ "date", ++ "delta", ++ "exclude" ++ ] ++ }, ++ "StatusHistoryRequest": { ++ "type": "object", ++ "properties": { ++ "filter": { ++ "$ref": "#/definitions/StatusHistoryFilter" ++ }, ++ "historyKind": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "historyKind", ++ "size", ++ "filter", ++ "tag" ++ ] ++ }, ++ "StatusHistoryRequests": { ++ "type": "object", ++ "properties": { ++ "requests": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryRequest" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "requests" ++ ] ++ }, ++ "StatusHistoryResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "history": { ++ "$ref": "#/definitions/History" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "history" ++ ] ++ }, ++ "StatusHistoryResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusHistoryResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusParams": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "agent-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "charm": { ++ "type": "string" ++ }, ++ "leader": { ++ "type": "boolean" ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "opened-ports": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "public-address": { ++ "type": "string" ++ }, ++ "subordinates": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitStatus" ++ } ++ } ++ }, ++ "workload-status": { ++ "$ref": "#/definitions/DetailedStatus" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-status", ++ "workload-status", ++ "workload-version", ++ "machine", ++ "opened-ports", ++ "public-address", ++ "charm", ++ "subordinates" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Cloud", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudResults" ++ } ++ } ++ }, ++ "Clouds": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/CloudsResult" ++ } ++ } ++ }, ++ "Credential": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudCredentialResults" ++ } ++ } ++ }, ++ "DefaultCloud": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ }, ++ "RevokeCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpdateCloudCredentials" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserCredentials": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserClouds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Cloud": { ++ "type": "object", ++ "properties": { ++ "auth-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudRegion" ++ } ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudCredentialResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudCredential" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudCredentialResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudCredentialResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cloud-tag", ++ "region" ++ ] ++ }, ++ "CloudInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "CloudRegion": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name" ++ ] ++ }, ++ "CloudResult": { ++ "type": "object", ++ "properties": { ++ "cloud": { ++ "$ref": "#/definitions/Cloud" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudsResult": { ++ "type": "object", ++ "properties": { ++ "clouds": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/Cloud" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateCloudCredential": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "credential" ++ ] ++ }, ++ "UpdateCloudCredentials": { ++ "type": "object", ++ "properties": { ++ "credentials": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UpdateCloudCredential" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserCloud": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "cloud-tag" ++ ] ++ }, ++ "UserClouds": { ++ "type": "object", ++ "properties": { ++ "user-clouds": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserCloud" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Controller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DestroyController": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DestroyControllerArgs" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserAccessResults" ++ } ++ } ++ }, ++ "HostedModelConfigs": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/HostedModelConfigsResults" ++ } ++ } ++ }, ++ "InitiateMigration": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InitiateMigrationArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InitiateMigrationResults" ++ } ++ } ++ }, ++ "ListBlockedModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelBlockInfoList" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyControllerAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveBlocks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RemoveBlocksArgs" ++ } ++ } ++ }, ++ "WatchAllModels": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/AllWatcherId" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AllWatcherId": { ++ "type": "object", ++ "properties": { ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DestroyControllerArgs": { ++ "type": "object", ++ "properties": { ++ "destroy-models": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destroy-models" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostedModelConfig": { ++ "type": "object", ++ "properties": { ++ "cloud-spec": { ++ "$ref": "#/definitions/CloudSpec" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner" ++ ] ++ }, ++ "HostedModelConfigsResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostedModelConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "InitiateMigrationArgs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "InitiateMigrationResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "migration-id" ++ ] ++ }, ++ "InitiateMigrationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InitiateMigrationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelBlockInfo": { ++ "type": "object", ++ "properties": { ++ "blocks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "model-uuid": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "model-uuid", ++ "owner-tag", ++ "blocks" ++ ] ++ }, ++ "ModelBlockInfoList": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelBlockInfo" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyControllerAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access" ++ ] ++ }, ++ "ModifyControllerAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyControllerAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "RemoveBlocksArgs": { ++ "type": "object", ++ "properties": { ++ "all": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "all" ++ ] ++ }, ++ "UserAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "access" ++ ] ++ }, ++ "UserAccessResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserAccess" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserAccessResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserAccessResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Deployer", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "ConnectionInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/DeployerConnectionValues" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DeployerConnectionValues": { ++ "type": "object", ++ "properties": { ++ "api-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "state-addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "state-addresses", ++ "api-addresses" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "DiskManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineBlockDevices" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ }, ++ "WWN": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "WWN", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "SetMachineBlockDevices": { ++ "type": "object", ++ "properties": { ++ "machine-block-devices": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineBlockDevices" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-block-devices" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "EntityWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/EntitiesWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "EntitiesWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "FilesystemAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Firewaller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResults" ++ } ++ } ++ }, ++ "GetAssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "GetCloudSpec": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "GetExposed": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "GetMachineActiveSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "GetMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachinePortsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "WatchOpenedPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "CloudCredential": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "auth-type": { ++ "type": "string" ++ }, ++ "redacted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "auth-type" ++ ] ++ }, ++ "CloudSpec": { ++ "type": "object", ++ "properties": { ++ "credential": { ++ "$ref": "#/definitions/CloudCredential" ++ }, ++ "endpoint": { ++ "type": "string" ++ }, ++ "identity-endpoint": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "storage-endpoint": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type", ++ "name" ++ ] ++ }, ++ "CloudSpecResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/CloudSpec" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "CloudSpecResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudSpecResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePorts": { ++ "type": "object", ++ "properties": { ++ "machine-tag": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "subnet-tag" ++ ] ++ }, ++ "MachinePortsParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePorts" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelTag": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HighAvailability", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "EnableHA": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ControllersSpecs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ControllersChangeResults" ++ } ++ } ++ }, ++ "ResumeHAReplicationAfterUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ResumeReplicationParams" ++ } ++ } ++ }, ++ "StopHAReplicationForUpgrade": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UpgradeMongoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MongoUpgradeResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "Scope": { ++ "type": "string" ++ }, ++ "SpaceName": { ++ "type": "string" ++ }, ++ "SpaceProviderId": { ++ "type": "string" ++ }, ++ "Type": { ++ "type": "string" ++ }, ++ "Value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Value", ++ "Type", ++ "Scope", ++ "SpaceName", ++ "SpaceProviderId" ++ ] ++ }, ++ "ControllersChangeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ControllersChanges" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ControllersChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersChangeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ControllersChanges": { ++ "type": "object", ++ "properties": { ++ "added": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "converted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "demoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "maintained": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "promoted": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "removed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ControllersSpec": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "num-controllers": { ++ "type": "integer" ++ }, ++ "placement": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "num-controllers" ++ ] ++ }, ++ "ControllersSpecs": { ++ "type": "object", ++ "properties": { ++ "specs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ControllersSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "specs" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HAMember": { ++ "type": "object", ++ "properties": { ++ "public-address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-address", ++ "series" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Member": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "type": "string" ++ }, ++ "Arbiter": { ++ "type": "boolean" ++ }, ++ "BuildIndexes": { ++ "type": "boolean" ++ }, ++ "Hidden": { ++ "type": "boolean" ++ }, ++ "Id": { ++ "type": "integer" ++ }, ++ "Priority": { ++ "type": "number" ++ }, ++ "SlaveDelay": { ++ "type": "integer" ++ }, ++ "Tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "Votes": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Id", ++ "Address", ++ "Arbiter", ++ "BuildIndexes", ++ "Hidden", ++ "Priority", ++ "Tags", ++ "SlaveDelay", ++ "Votes" ++ ] ++ }, ++ "MongoUpgradeResults": { ++ "type": "object", ++ "properties": { ++ "ha-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HAMember" ++ } ++ }, ++ "master": { ++ "$ref": "#/definitions/HAMember" ++ }, ++ "rs-members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "rs-members", ++ "master", ++ "ha-members" ++ ] ++ }, ++ "MongoVersion": { ++ "type": "object", ++ "properties": { ++ "engine": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "patch": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "major", ++ "minor", ++ "patch", ++ "engine" ++ ] ++ }, ++ "ResumeReplicationParams": { ++ "type": "object", ++ "properties": { ++ "members": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Member" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "members" ++ ] ++ }, ++ "UpgradeMongoParams": { ++ "type": "object", ++ "properties": { ++ "target": { ++ "$ref": "#/definitions/MongoVersion" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "target" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "HostKeyReporter", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ReportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SSHHostKeySet" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHHostKeySet": { ++ "type": "object", ++ "properties": { ++ "entity-keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHHostKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entity-keys" ++ ] ++ }, ++ "SSHHostKeys": { ++ "type": "object", ++ "properties": { ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "public-keys" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageManager", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DeleteImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListImages": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageFilterParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListImageResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageFilterParams": { ++ "type": "object", ++ "properties": { ++ "images": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageSpec" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "images" ++ ] ++ }, ++ "ImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series", ++ "url", ++ "created" ++ ] ++ }, ++ "ImageSpec": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "kind": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "kind", ++ "arch", ++ "series" ++ ] ++ }, ++ "ListImageResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ImageMetadata", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Delete": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataImageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ImageMetadataFilter" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListCloudImageMetadataResult" ++ } ++ } ++ }, ++ "Save": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetadataSaveParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateFromPublishedImages": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "CloudImageMetadataList": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ImageMetadataFilter": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListCloudImageMetadataResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MetadataImageIds": { ++ "type": "object", ++ "properties": { ++ "image-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-ids" ++ ] ++ }, ++ "MetadataSaveParams": { ++ "type": "object", ++ "properties": { ++ "metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadataList" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "InstancePoller", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AreManuallyProvisioned": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineAddressesResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "MachineAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DeleteKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ImportKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyUserSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListSSHKeys" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSSHKeys": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "mode": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "mode" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModifyUserSSHKeys": { ++ "type": "object", ++ "properties": { ++ "ssh-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "ssh-keys" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "KeyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "WatchAuthorisedKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LeadershipService", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "BlockUntilLeadershipReleased": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ApplicationTag" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "ClaimLeadership": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ClaimLeadershipBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ClaimLeadershipBulkResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ApplicationTag": { ++ "type": "object", ++ "properties": { ++ "Name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Name" ++ ] ++ }, ++ "ClaimLeadershipBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ClaimLeadershipParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "ClaimLeadershipBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ClaimLeadershipParams": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "number" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "unit-tag", ++ "duration" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LifeFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "LogForwarding", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingGetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResults" ++ } ++ } ++ }, ++ "SetLastSent": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingGetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingID" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "LogForwardingGetLastSentResult": { ++ "type": "object", ++ "properties": { ++ "err": { ++ "$ref": "#/definitions/Error" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "record-id", ++ "record-timestamp", ++ "err" ++ ] ++ }, ++ "LogForwardingGetLastSentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingGetLastSentResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LogForwardingID": { ++ "type": "object", ++ "properties": { ++ "model": { ++ "type": "string" ++ }, ++ "sink": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "sink" ++ ] ++ }, ++ "LogForwardingSetLastSentParam": { ++ "type": "object", ++ "properties": { ++ "LogForwardingID": { ++ "$ref": "#/definitions/LogForwardingID" ++ }, ++ "record-id": { ++ "type": "integer" ++ }, ++ "record-timestamp": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "LogForwardingID", ++ "record-id", ++ "record-timestamp" ++ ] ++ }, ++ "LogForwardingSetLastSentParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LogForwardingSetLastSentParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Logger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "LoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "WatchLoggingConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineActions", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RunningActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionsByReceivers" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceiver": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "receiver": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionsByReceivers": { ++ "type": "object", ++ "properties": { ++ "actions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionsByReceiver" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineManager", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddMachines" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddMachinesResults" ++ } ++ } ++ }, ++ "DestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "ForceDestroyMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DestroyMachineResults" ++ } ++ } ++ }, ++ "InstanceTypes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraints" ++ }, ++ "Result": { ++ "$ref": "#/definitions/InstanceTypesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddMachineParams": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "container-type": { ++ "type": "string" ++ }, ++ "disks": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Constraints" ++ } ++ }, ++ "hardware-characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "parent-id": { ++ "type": "string" ++ }, ++ "placement": { ++ "$ref": "#/definitions/Placement" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "series", ++ "constraints", ++ "jobs", ++ "parent-id", ++ "container-type", ++ "instance-id", ++ "nonce", ++ "hardware-characteristics", ++ "addresses" ++ ] ++ }, ++ "AddMachines": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachineParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "AddMachinesResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "machine": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine" ++ ] ++ }, ++ "AddMachinesResults": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddMachinesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Count": { ++ "type": "integer" ++ }, ++ "Pool": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Pool", ++ "Size", ++ "Count" ++ ] ++ }, ++ "DestroyMachineInfo": { ++ "type": "object", ++ "properties": { ++ "destroyed-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "destroyed-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "detached-storage": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "$ref": "#/definitions/DestroyMachineInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "DestroyMachineResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DestroyMachineResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceType": { ++ "type": "object", ++ "properties": { ++ "arches": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "cost": { ++ "type": "integer" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "deprecated": { ++ "type": "boolean" ++ }, ++ "memory": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "arches", ++ "cpu-cores", ++ "memory" ++ ] ++ }, ++ "InstanceTypesResult": { ++ "type": "object", ++ "properties": { ++ "cost-currency": { ++ "type": "string" ++ }, ++ "cost-divisor": { ++ "type": "integer" ++ }, ++ "cost-unit": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "instance-types": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceType" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "InstanceTypesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceTypesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraint": { ++ "type": "object", ++ "properties": { ++ "value": { ++ "$ref": "#/definitions/Value" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInstanceTypesConstraints": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInstanceTypesConstraint" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "Placement": { ++ "type": "object", ++ "properties": { ++ "directive": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "scope", ++ "directive" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MachineUndertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/EntitiesResults" ++ } ++ } ++ }, ++ "CompleteMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ } ++ } ++ }, ++ "GetMachineProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResults" ++ } ++ } ++ }, ++ "WatchMachineRemovals": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResult": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntitiesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProviderInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "interface-name", ++ "mac-address", ++ "provider-id" ++ ] ++ }, ++ "ProviderInterfaceInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "interfaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfo" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "interfaces" ++ ] ++ }, ++ "ProviderInterfaceInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProviderInterfaceInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Machiner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Jobs": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/JobsResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetMachineAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachinesAddresses" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "JobsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "jobs" ++ ] ++ }, ++ "JobsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/JobsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineAddresses": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Address" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "addresses" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetMachinesAddresses": { ++ "type": "object", ++ "properties": { ++ "machine-addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineAddresses" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-addresses" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MeterStatus", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsAdder", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsDebug", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MetricResults" ++ } ++ } ++ }, ++ "SetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MeterStatusParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityMetrics": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MeterStatusParam": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusParams": { ++ "type": "object", ++ "properties": { ++ "statues": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "statues" ++ ] ++ }, ++ "MetricResult": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "unit": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "time", ++ "key", ++ "value", ++ "unit" ++ ] ++ }, ++ "MetricResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityMetrics" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MetricsManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddJujuMachineMetrics": { ++ "type": "object" ++ }, ++ "CleanupOldMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SendMetrics": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationFlag", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Phase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PhaseResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PhaseResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "PhaseResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PhaseResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMaster", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Export": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MasterMigrationStatus" ++ } ++ } ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MinionReports" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object" ++ }, ++ "Reap": { ++ "type": "object" ++ }, ++ "SetPhase": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationPhaseArgs" ++ } ++ } ++ }, ++ "SetStatusMessage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMigrationStatusMessageArgs" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMinionReports": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MasterMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "phase-changed-time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "spec": { ++ "$ref": "#/definitions/MigrationSpec" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spec", ++ "migration-id", ++ "phase", ++ "phase-changed-time" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "MigrationSpec": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "target-info": { ++ "$ref": "#/definitions/MigrationTargetInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "target-info" ++ ] ++ }, ++ "MigrationTargetInfo": { ++ "type": "object", ++ "properties": { ++ "addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "auth-tag": { ++ "type": "string" ++ }, ++ "ca-cert": { ++ "type": "string" ++ }, ++ "controller-tag": { ++ "type": "string" ++ }, ++ "macaroons": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "controller-tag", ++ "addrs", ++ "ca-cert", ++ "auth-tag" ++ ] ++ }, ++ "MinionReports": { ++ "type": "object", ++ "properties": { ++ "failed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success-count": { ++ "type": "integer" ++ }, ++ "unknown-count": { ++ "type": "integer" ++ }, ++ "unknown-sample": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success-count", ++ "unknown-count", ++ "unknown-sample", ++ "failed" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ }, ++ "SetMigrationPhaseArgs": { ++ "type": "object", ++ "properties": { ++ "phase": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "phase" ++ ] ++ }, ++ "SetMigrationStatusMessageArgs": { ++ "type": "object", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationMinion", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Report": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MinionReport" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MinionReport": { ++ "type": "object", ++ "properties": { ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "success": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "phase", ++ "success" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationStatusWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MigrationStatus" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "MigrationStatus": { ++ "type": "object", ++ "properties": { ++ "attempt": { ++ "type": "integer" ++ }, ++ "migration-id": { ++ "type": "string" ++ }, ++ "phase": { ++ "type": "string" ++ }, ++ "source-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "source-ca-cert": { ++ "type": "string" ++ }, ++ "target-api-addrs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "target-ca-cert": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "migration-id", ++ "attempt", ++ "phase", ++ "source-api-addrs", ++ "source-ca-cert", ++ "target-api-addrs", ++ "target-ca-cert" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "MigrationTarget", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Abort": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "Activate": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ } ++ } ++ }, ++ "AdoptResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AdoptResourcesArgs" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Import": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SerializedModel" ++ } ++ } ++ }, ++ "LatestLogTime": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelArgs" ++ }, ++ "Result": { ++ "type": "string", ++ "format": "date-time" ++ } ++ } ++ }, ++ "Prechecks": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MigrationModelInfo" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AdoptResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ }, ++ "source-controller-version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "source-controller-version" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MigrationModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "controller-agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "owner-tag", ++ "agent-version", ++ "controller-agent-version" ++ ] ++ }, ++ "ModelArgs": { ++ "type": "object", ++ "properties": { ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "SerializedModel": { ++ "type": "object", ++ "properties": { ++ "bytes": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "charms": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelResource" ++ } ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SerializedModelTools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "bytes", ++ "charms", ++ "tools", ++ "resources" ++ ] ++ }, ++ "SerializedModelResource": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "type": "string" ++ }, ++ "application-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "charmstore-revision": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "unit-revisions": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/SerializedModelResourceRevision" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "name", ++ "application-revision", ++ "charmstore-revision", ++ "unit-revisions" ++ ] ++ }, ++ "SerializedModelResourceRevision": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "revision", ++ "type", ++ "path", ++ "description", ++ "origin", ++ "fingerprint", ++ "size", ++ "timestamp" ++ ] ++ }, ++ "SerializedModelTools": { ++ "type": "object", ++ "properties": { ++ "uri": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "uri" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelConfig", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelGet": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResults" ++ } ++ } ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSet" ++ } ++ } ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelUnset" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetSLALevel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelSLA" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "ConfigValue": { ++ "type": "object", ++ "properties": { ++ "source": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "source" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ConfigValue" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelSLA": { ++ "type": "object", ++ "properties": { ++ "ModelSLAInfo": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "creds": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ModelSLAInfo", ++ "creds" ++ ] ++ }, ++ "ModelSLAInfo": { ++ "type": "object", ++ "properties": { ++ "level": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "owner" ++ ] ++ }, ++ "ModelSet": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelUnset": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ModelManager", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateModel": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModelCreateArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ } ++ }, ++ "DestroyModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DumpModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/DumpModelRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "DumpModelsDB": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MapResults" ++ } ++ } ++ }, ++ "ListModels": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserModelList" ++ } ++ } ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelDefaultsResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelInfoResults" ++ } ++ } ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ModelStatusResults" ++ } ++ } ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ModifyModelAccessRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UnsetModelDefaults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "DumpModelRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "simplified": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "simplified" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineHardware": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "MapResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "MapResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MapResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Model": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "owner-tag" ++ ] ++ }, ++ "ModelCreateArgs": { ++ "type": "object", ++ "properties": { ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "credential": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "region": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "owner-tag" ++ ] ++ }, ++ "ModelDefaultValues": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelDefaults": { ++ "type": "object", ++ "properties": { ++ "controller": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "default": { ++ "type": "object", ++ "additionalProperties": true ++ }, ++ "regions": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RegionDefaults" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelDefaultsResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/ModelDefaults" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "agent-version": { ++ "$ref": "#/definitions/Number" ++ }, ++ "cloud-credential-tag": { ++ "type": "string" ++ }, ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "controller-uuid": { ++ "type": "string" ++ }, ++ "default-series": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "migration": { ++ "$ref": "#/definitions/ModelMigrationStatus" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "sla": { ++ "$ref": "#/definitions/ModelSLAInfo" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUserInfo" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid", ++ "controller-uuid", ++ "cloud-tag", ++ "owner-tag", ++ "life", ++ "users", ++ "machines", ++ "sla", ++ "agent-version" ++ ] ++ }, ++ "ModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ModelInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ModelInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelMachineInfo": { ++ "type": "object", ++ "properties": { ++ "hardware": { ++ "$ref": "#/definitions/MachineHardware" ++ }, ++ "has-vote": { ++ "type": "boolean" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "wants-vote": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id" ++ ] ++ }, ++ "ModelMigrationStatus": { ++ "type": "object", ++ "properties": { ++ "end": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "start": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "start" ++ ] ++ }, ++ "ModelSLAInfo": { ++ "type": "object", ++ "properties": { ++ "level": { ++ "type": "string" ++ }, ++ "owner": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "level", ++ "owner" ++ ] ++ }, ++ "ModelStatus": { ++ "type": "object", ++ "properties": { ++ "application-count": { ++ "type": "integer" ++ }, ++ "hosted-machine-count": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelMachineInfo" ++ } ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "life", ++ "hosted-machine-count", ++ "application-count", ++ "owner-tag" ++ ] ++ }, ++ "ModelStatusResults": { ++ "type": "object", ++ "properties": { ++ "models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelStatus" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "models" ++ ] ++ }, ++ "ModelUnsetKeys": { ++ "type": "object", ++ "properties": { ++ "cloud-region": { ++ "type": "string" ++ }, ++ "cloud-tag": { ++ "type": "string" ++ }, ++ "keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "ModelUserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "user": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user", ++ "display-name", ++ "last-connection", ++ "access" ++ ] ++ }, ++ "ModifyModelAccess": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "action": { ++ "type": "string" ++ }, ++ "model-tag": { ++ "type": "string" ++ }, ++ "user-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-tag", ++ "action", ++ "access", ++ "model-tag" ++ ] ++ }, ++ "ModifyModelAccessRequest": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModifyModelAccess" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "RegionDefaults": { ++ "type": "object", ++ "properties": { ++ "region-name": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "region-name", ++ "value" ++ ] ++ }, ++ "SetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelDefaultValues" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnsetModelDefaults": { ++ "type": "object", ++ "properties": { ++ "keys": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ModelUnsetKeys" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "keys" ++ ] ++ }, ++ "UserModel": { ++ "type": "object", ++ "properties": { ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "model": { ++ "$ref": "#/definitions/Model" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model", ++ "last-connection" ++ ] ++ }, ++ "UserModelList": { ++ "type": "object", ++ "properties": { ++ "user-models": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserModel" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "user-models" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "NotifyWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Payloads", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/PayloadListArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadListResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadListArgs": { ++ "type": "object", ++ "properties": { ++ "patterns": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "patterns" ++ ] ++ }, ++ "PayloadListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "PayloadsHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "List": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "LookUp": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/LookUpPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetPayloadStatusArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Track": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/TrackPayloadArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ }, ++ "Untrack": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/PayloadResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "LookUpPayloadArg": { ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "id" ++ ] ++ }, ++ "LookUpPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LookUpPayloadArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Payload": { ++ "type": "object", ++ "properties": { ++ "class": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "labels": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "class", ++ "type", ++ "id", ++ "status", ++ "labels", ++ "unit", ++ "machine" ++ ] ++ }, ++ "PayloadResult": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "not-found": { ++ "type": "boolean" ++ }, ++ "payload": { ++ "$ref": "#/definitions/Payload" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "payload", ++ "not-found" ++ ] ++ }, ++ "PayloadResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/PayloadResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetPayloadStatusArg": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "status" ++ ] ++ }, ++ "SetPayloadStatusArgs": { ++ "type": "object", ++ "properties": { ++ "args": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SetPayloadStatusArg" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "args" ++ ] ++ }, ++ "TrackPayloadArgs": { ++ "type": "object", ++ "properties": { ++ "payloads": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Payload" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "payloads" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Pinger", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Ping": { ++ "type": "object" ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Provisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "Constraints": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConstraintsResults" ++ } ++ } ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ContainerConfig" ++ } ++ } ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ContainerManagerConfigParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ContainerManagerConfig" ++ } ++ } ++ }, ++ "ControllerConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ControllerConfigResult" ++ } ++ } ++ }, ++ "DistributionGroup": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/DistributionGroupResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FindTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FindToolsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FindToolsResult" ++ } ++ } ++ }, ++ "GetContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "HostChangesForContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/HostNetworkChangeResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "InstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "MachinesWithTransientErrors": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "MarkMachinesForRemoval": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PrepareContainerInterfaceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineNetworkConfigResults" ++ } ++ } ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProvisioningInfoResults" ++ } ++ } ++ }, ++ "ReleaseContainerAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Series": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "SetHostMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetInstanceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/InstancesInfo" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetInstanceStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetObservedNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetMachineNetworkConfig" ++ } ++ } ++ }, ++ "SetPasswords": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetProviderNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetSupportedContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineContainersParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StateAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "Status": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchAllContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/WatchContainers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchMachineErrorRetry": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchModelMachines": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CloudImageMetadata": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "image-id": { ++ "type": "string" ++ }, ++ "priority": { ++ "type": "integer" ++ }, ++ "region": { ++ "type": "string" ++ }, ++ "root-storage-size": { ++ "type": "integer" ++ }, ++ "root-storage-type": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "source": { ++ "type": "string" ++ }, ++ "stream": { ++ "type": "string" ++ }, ++ "version": { ++ "type": "string" ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "image-id", ++ "region", ++ "version", ++ "series", ++ "arch", ++ "source", ++ "priority" ++ ] ++ }, ++ "ConstraintsResult": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints" ++ ] ++ }, ++ "ConstraintsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConstraintsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ContainerConfig": { ++ "type": "object", ++ "properties": { ++ "UpdateBehavior": { ++ "$ref": "#/definitions/UpdateBehavior" ++ }, ++ "apt-mirror": { ++ "type": "string" ++ }, ++ "apt-proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "authorized-keys": { ++ "type": "string" ++ }, ++ "provider-type": { ++ "type": "string" ++ }, ++ "proxy": { ++ "$ref": "#/definitions/Settings" ++ }, ++ "ssl-hostname-verification": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "provider-type", ++ "authorized-keys", ++ "ssl-hostname-verification", ++ "proxy", ++ "apt-proxy", ++ "apt-mirror", ++ "UpdateBehavior" ++ ] ++ }, ++ "ContainerManagerConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ContainerManagerConfigParams": { ++ "type": "object", ++ "properties": { ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "type" ++ ] ++ }, ++ "ControllerConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "DeviceBridgeInfo": { ++ "type": "object", ++ "properties": { ++ "bridge-name": { ++ "type": "string" ++ }, ++ "host-device-name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "host-device-name", ++ "bridge-name" ++ ] ++ }, ++ "DistributionGroupResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "DistributionGroupResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DistributionGroupResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FindToolsParams": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "major": { ++ "type": "integer" ++ }, ++ "minor": { ++ "type": "integer" ++ }, ++ "number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "number", ++ "major", ++ "minor", ++ "arch", ++ "series" ++ ] ++ }, ++ "FindToolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "list": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "list" ++ ] ++ }, ++ "HardwareCharacteristics": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "availability-zone": { ++ "type": "string" ++ }, ++ "cpu-cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "HostNetworkChange": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "new-bridges": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/DeviceBridgeInfo" ++ } ++ }, ++ "reconfigure-delay": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "new-bridges", ++ "reconfigure-delay" ++ ] ++ }, ++ "HostNetworkChangeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostNetworkChange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "InstanceInfo": { ++ "type": "object", ++ "properties": { ++ "characteristics": { ++ "$ref": "#/definitions/HardwareCharacteristics" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "network-config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "nonce": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "volume-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ } ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "instance-id", ++ "nonce", ++ "characteristics", ++ "volumes", ++ "volume-attachments", ++ "network-config" ++ ] ++ }, ++ "InstancesInfo": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InstanceInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machines" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineContainers": { ++ "type": "object", ++ "properties": { ++ "container-types": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-types" ++ ] ++ }, ++ "MachineContainersParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineContainers" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MachineNetworkConfigResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "info" ++ ] ++ }, ++ "MachineNetworkConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineNetworkConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NetworkConfig": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "cidr": { ++ "type": "string" ++ }, ++ "config-type": { ++ "type": "string" ++ }, ++ "device-index": { ++ "type": "integer" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "dns-search-domains": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "dns-servers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "gateway-address": { ++ "type": "string" ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "interface-type": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ }, ++ "mtu": { ++ "type": "integer" ++ }, ++ "no-auto-start": { ++ "type": "boolean" ++ }, ++ "parent-interface-name": { ++ "type": "string" ++ }, ++ "provider-address-id": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "provider-subnet-id": { ++ "type": "string" ++ }, ++ "provider-vlan-id": { ++ "type": "string" ++ }, ++ "routes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkRoute" ++ } ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "device-index", ++ "mac-address", ++ "cidr", ++ "mtu", ++ "provider-id", ++ "provider-subnet-id", ++ "provider-space-id", ++ "provider-address-id", ++ "provider-vlan-id", ++ "vlan-tag", ++ "interface-name", ++ "parent-interface-name", ++ "interface-type", ++ "disabled" ++ ] ++ }, ++ "NetworkRoute": { ++ "type": "object", ++ "properties": { ++ "destination-cidr": { ++ "type": "string" ++ }, ++ "gateway-ip": { ++ "type": "string" ++ }, ++ "metric": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "destination-cidr", ++ "gateway-ip", ++ "metric" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "ProvisioningInfo": { ++ "type": "object", ++ "properties": { ++ "constraints": { ++ "$ref": "#/definitions/Value" ++ }, ++ "controller-config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "endpoint-bindings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "image-metadata": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CloudImageMetadata" ++ } ++ }, ++ "jobs": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "placement": { ++ "type": "string" ++ }, ++ "series": { ++ "type": "string" ++ }, ++ "subnets-to-zones": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "constraints", ++ "series", ++ "placement", ++ "jobs" ++ ] ++ }, ++ "ProvisioningInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/ProvisioningInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "ProvisioningInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProvisioningInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetMachineNetworkConfig": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkConfig" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "config" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Settings": { ++ "type": "object", ++ "properties": { ++ "AutoNoProxy": { ++ "type": "string" ++ }, ++ "Ftp": { ++ "type": "string" ++ }, ++ "Http": { ++ "type": "string" ++ }, ++ "Https": { ++ "type": "string" ++ }, ++ "NoProxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Http", ++ "Https", ++ "Ftp", ++ "NoProxy", ++ "AutoNoProxy" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UpdateBehavior": { ++ "type": "object", ++ "properties": { ++ "enable-os-refresh-update": { ++ "type": "boolean" ++ }, ++ "enable-os-upgrade": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "enable-os-refresh-update", ++ "enable-os-upgrade" ++ ] ++ }, ++ "Value": { ++ "type": "object", ++ "properties": { ++ "arch": { ++ "type": "string" ++ }, ++ "container": { ++ "type": "string" ++ }, ++ "cores": { ++ "type": "integer" ++ }, ++ "cpu-power": { ++ "type": "integer" ++ }, ++ "instance-type": { ++ "type": "string" ++ }, ++ "mem": { ++ "type": "integer" ++ }, ++ "root-disk": { ++ "type": "integer" ++ }, ++ "spaces": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "virt-type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "wwn": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "WatchContainer": { ++ "type": "object", ++ "properties": { ++ "container-type": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "container-type" ++ ] ++ }, ++ "WatchContainers": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/WatchContainer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ProxyUpdater", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ProxyConfigResults" ++ } ++ } ++ }, ++ "WatchForProxyConfigAndAPIHostPortChanges": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ProxyConfig": { ++ "type": "object", ++ "properties": { ++ "ftp": { ++ "type": "string" ++ }, ++ "http": { ++ "type": "string" ++ }, ++ "https": { ++ "type": "string" ++ }, ++ "no-proxy": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "http", ++ "https", ++ "ftp", ++ "no-proxy" ++ ] ++ }, ++ "ProxyConfigResult": { ++ "type": "object", ++ "properties": { ++ "apt-proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "proxy-settings": { ++ "$ref": "#/definitions/ProxyConfig" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "proxy-settings", ++ "apt-proxy-settings" ++ ] ++ }, ++ "ProxyConfigResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ProxyConfigResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Reboot", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ClearReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetRebootAction": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RebootActionResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchForRebootEvent": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "RebootActionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RebootActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RebootActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RelationUnitsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resources", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddPendingResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddPendingResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddPendingResourcesResult" ++ } ++ } ++ }, ++ "ListResources": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResourcesResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddCharmWithAuthorization": { ++ "type": "object", ++ "properties": { ++ "channel": { ++ "type": "string" ++ }, ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url", ++ "channel", ++ "macaroon" ++ ] ++ }, ++ "AddPendingResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "AddCharmWithAuthorization": { ++ "$ref": "#/definitions/AddCharmWithAuthorization" ++ }, ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "AddCharmWithAuthorization", ++ "resources" ++ ] ++ }, ++ "AddPendingResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "pending-ids": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "pending-ids" ++ ] ++ }, ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "ResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "charm-store-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmResource" ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "unit-resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResources" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources", ++ "charm-store-resources", ++ "unit-resources" ++ ] ++ }, ++ "ResourcesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResourcesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitResources": { ++ "type": "object", ++ "properties": { ++ "Entity": { ++ "$ref": "#/definitions/Entity" ++ }, ++ "download-progress": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "integer" ++ } ++ } ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Resource" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Entity", ++ "resources", ++ "download-progress" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "ResourcesHookContext", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "GetResourceInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ListUnitResourcesArgs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UnitResourcesResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "CharmResource": { ++ "type": "object", ++ "properties": { ++ "description": { ++ "type": "string" ++ }, ++ "fingerprint": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "origin": { ++ "type": "string" ++ }, ++ "path": { ++ "type": "string" ++ }, ++ "revision": { ++ "type": "integer" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "type": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "type", ++ "path", ++ "origin", ++ "revision", ++ "fingerprint", ++ "size" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ListUnitResourcesArgs": { ++ "type": "object", ++ "properties": { ++ "resource-names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "resource-names" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Resource": { ++ "type": "object", ++ "properties": { ++ "CharmResource": { ++ "$ref": "#/definitions/CharmResource" ++ }, ++ "application": { ++ "type": "string" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "pending-id": { ++ "type": "string" ++ }, ++ "timestamp": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "CharmResource", ++ "id", ++ "pending-id", ++ "application", ++ "username", ++ "timestamp" ++ ] ++ }, ++ "UnitResourceResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resource": { ++ "$ref": "#/definitions/Resource" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resource" ++ ] ++ }, ++ "UnitResourcesResult": { ++ "type": "object", ++ "properties": { ++ "ErrorResult": { ++ "$ref": "#/definitions/ErrorResult" ++ }, ++ "resources": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UnitResourceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ErrorResult", ++ "resources" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Resumer", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ResumeTransactions": { ++ "type": "object" ++ } ++ } ++ } ++ }, ++ { ++ "Name": "RetryStrategy", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RetryStrategyResults" ++ } ++ } ++ }, ++ "WatchRetryStrategy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RetryStrategy": { ++ "type": "object", ++ "properties": { ++ "jitter-retry-time": { ++ "type": "boolean" ++ }, ++ "max-retry-time": { ++ "type": "integer" ++ }, ++ "min-retry-time": { ++ "type": "integer" ++ }, ++ "retry-time-factor": { ++ "type": "integer" ++ }, ++ "should-retry": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "should-retry", ++ "min-retry-time", ++ "max-retry-time", ++ "jitter-retry-time", ++ "retry-time-factor" ++ ] ++ }, ++ "RetryStrategyResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/RetryStrategy" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "RetryStrategyResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RetryStrategyResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "SSHClient", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AllAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressesResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "Proxy": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SSHProxyResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHAddressResults" ++ } ++ } ++ }, ++ "PublicKeys": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SSHPublicKeysResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SSHAddressResult": { ++ "type": "object", ++ "properties": { ++ "address": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHAddressResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHAddressesResult": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "addresses" ++ ] ++ }, ++ "SSHAddressesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHAddressesResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SSHProxyResult": { ++ "type": "object", ++ "properties": { ++ "use-proxy": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "use-proxy" ++ ] ++ }, ++ "SSHPublicKeysResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "public-keys": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "SSHPublicKeysResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SSHPublicKeysResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Singular", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Claim": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SingularClaims" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Wait": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SingularClaim": { ++ "type": "object", ++ "properties": { ++ "controller-tag": { ++ "type": "string" ++ }, ++ "duration": { ++ "type": "integer" ++ }, ++ "model-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "model-tag", ++ "controller-tag", ++ "duration" ++ ] ++ }, ++ "SingularClaims": { ++ "type": "object", ++ "properties": { ++ "claims": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SingularClaim" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "claims" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Spaces", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "CreateSpaces": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CreateSpacesParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ListSpacesResults" ++ } ++ } ++ }, ++ "ReloadSpaces": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "CreateSpaceParams": { ++ "type": "object", ++ "properties": { ++ "provider-id": { ++ "type": "string" ++ }, ++ "public": { ++ "type": "boolean" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-tags": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnet-tags", ++ "space-tag", ++ "public" ++ ] ++ }, ++ "CreateSpacesParams": { ++ "type": "object", ++ "properties": { ++ "spaces": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CreateSpaceParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "spaces" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSpacesResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Space" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "Space": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "subnets" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StatusHistory", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "Prune": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StatusHistoryPruneArgs" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "StatusHistoryPruneArgs": { ++ "type": "object", ++ "properties": { ++ "max-history-mb": { ++ "type": "integer" ++ }, ++ "max-history-time": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "max-history-time", ++ "max-history-mb" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Storage", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddToUnit": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Attach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CreatePool": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Detach": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ListFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemDetailsListResults" ++ } ++ } ++ }, ++ "ListPools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragePoolFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StoragePoolsResults" ++ } ++ } ++ }, ++ "ListStorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsListResults" ++ } ++ } ++ }, ++ "ListVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeDetailsListResults" ++ } ++ } ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageDetailsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatus": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "status", ++ "info", ++ "since" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "FilesystemAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "FilesystemAttachmentInfo": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "FilesystemAttachmentInfo" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetails": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/FilesystemAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "FilesystemDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag", ++ "machine-tag" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetails": { ++ "type": "object", ++ "properties": { ++ "attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StorageAttachmentDetails" ++ } ++ } ++ }, ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "kind", ++ "status", ++ "persistent" ++ ] ++ }, ++ "StorageDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageDetails" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageDetailsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageDetailsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageFilter": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StorageFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePool": { ++ "type": "object", ++ "properties": { ++ "attrs": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "provider", ++ "attrs" ++ ] ++ }, ++ "StoragePoolFilter": { ++ "type": "object", ++ "properties": { ++ "names": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "providers": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "storage-pools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePool" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragePoolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StoragePoolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "VolumeAttachmentDetails": { ++ "type": "object", ++ "properties": { ++ "VolumeAttachmentInfo": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "VolumeAttachmentInfo" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetails": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "machine-attachments": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/VolumeAttachmentDetails" ++ } ++ } ++ }, ++ "status": { ++ "$ref": "#/definitions/EntityStatus" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageDetails" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info", ++ "status" ++ ] ++ }, ++ "VolumeDetailsListResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetails" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeDetailsListResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeDetailsListResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilter": { ++ "type": "object", ++ "properties": { ++ "machines": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeFilters": { ++ "type": "object", ++ "properties": { ++ "filters": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeFilter" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "wwn": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StorageProvisioner", ++ "Version": 3, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResults" ++ } ++ } ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemAttachmentResults" ++ } ++ } ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemParamsResults" ++ } ++ } ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/FilesystemResults" ++ } ++ } ++ }, ++ "InstanceId": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Remove": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveAttachment": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/FilesystemAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetFilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Filesystems" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/VolumeAttachments" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetVolumeInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Volumes" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResults" ++ } ++ } ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeAttachmentResults" ++ } ++ } ++ }, ++ "VolumeBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MachineStorageIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BlockDeviceResults" ++ } ++ } ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeParamsResults" ++ } ++ } ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VolumeResults" ++ } ++ } ++ }, ++ "WatchBlockDevices": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchFilesystems": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchMachines": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchVolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResults" ++ } ++ } ++ }, ++ "WatchVolumes": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "BlockDevice": { ++ "type": "object", ++ "properties": { ++ "BusAddress": { ++ "type": "string" ++ }, ++ "DeviceLinks": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "DeviceName": { ++ "type": "string" ++ }, ++ "FilesystemType": { ++ "type": "string" ++ }, ++ "HardwareId": { ++ "type": "string" ++ }, ++ "InUse": { ++ "type": "boolean" ++ }, ++ "Label": { ++ "type": "string" ++ }, ++ "MountPoint": { ++ "type": "string" ++ }, ++ "Size": { ++ "type": "integer" ++ }, ++ "UUID": { ++ "type": "string" ++ }, ++ "WWN": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "DeviceName", ++ "DeviceLinks", ++ "Label", ++ "UUID", ++ "HardwareId", ++ "WWN", ++ "BusAddress", ++ "Size", ++ "FilesystemType", ++ "InUse", ++ "MountPoint" ++ ] ++ }, ++ "BlockDeviceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/BlockDevice" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BlockDeviceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BlockDeviceResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Filesystem": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachment": { ++ "type": "object", ++ "properties": { ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/FilesystemAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "FilesystemAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "mount-point": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "mount-point": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "FilesystemAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemAttachments": { ++ "type": "object", ++ "properties": { ++ "filesystem-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-attachments" ++ ] ++ }, ++ "FilesystemInfo": { ++ "type": "object", ++ "properties": { ++ "filesystem-id": { ++ "type": "string" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-id", ++ "pool", ++ "size" ++ ] ++ }, ++ "FilesystemParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/FilesystemAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "filesystem-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystem-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "FilesystemParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/FilesystemParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "FilesystemResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "FilesystemResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/FilesystemResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Filesystems": { ++ "type": "object", ++ "properties": { ++ "filesystems": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Filesystem" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "filesystems" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "MachineStorageIdsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Volume": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeInfo" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachment": { ++ "type": "object", ++ "properties": { ++ "info": { ++ "$ref": "#/definitions/VolumeAttachmentInfo" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "info" ++ ] ++ }, ++ "VolumeAttachmentInfo": { ++ "type": "object", ++ "properties": { ++ "bus-address": { ++ "type": "string" ++ }, ++ "device-link": { ++ "type": "string" ++ }, ++ "device-name": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentParams": { ++ "type": "object", ++ "properties": { ++ "instance-id": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "read-only": { ++ "type": "boolean" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "machine-tag", ++ "provider" ++ ] ++ }, ++ "VolumeAttachmentParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeAttachments": { ++ "type": "object", ++ "properties": { ++ "volume-attachments": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeAttachment" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-attachments" ++ ] ++ }, ++ "VolumeInfo": { ++ "type": "object", ++ "properties": { ++ "hardware-id": { ++ "type": "string" ++ }, ++ "persistent": { ++ "type": "boolean" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "volume-id": { ++ "type": "string" ++ }, ++ "wwn": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-id", ++ "size", ++ "persistent" ++ ] ++ }, ++ "VolumeParams": { ++ "type": "object", ++ "properties": { ++ "attachment": { ++ "$ref": "#/definitions/VolumeAttachmentParams" ++ }, ++ "attributes": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "provider": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "tags": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "volume-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volume-tag", ++ "size", ++ "provider" ++ ] ++ }, ++ "VolumeParamsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/VolumeParams" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeParamsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeParamsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VolumeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/Volume" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "VolumeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VolumeResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Volumes": { ++ "type": "object", ++ "properties": { ++ "volumes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Volume" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "volumes" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "StringsWatcher", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Subnets", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddSubnetsParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllSpaces": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/SpaceResults" ++ } ++ } ++ }, ++ "AllZones": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ZoneResults" ++ } ++ } ++ }, ++ "ListSubnets": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SubnetsFilters" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ListSubnetsResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddSubnetParams": { ++ "type": "object", ++ "properties": { ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "subnet-provider-id": { ++ "type": "string" ++ }, ++ "subnet-tag": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "space-tag" ++ ] ++ }, ++ "AddSubnetsParams": { ++ "type": "object", ++ "properties": { ++ "subnets": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddSubnetParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "subnets" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ListSubnetsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Subnet" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SpaceResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "SpaceResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SpaceResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Subnet": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "provider-id": { ++ "type": "string" ++ }, ++ "provider-network-id": { ++ "type": "string" ++ }, ++ "provider-space-id": { ++ "type": "string" ++ }, ++ "space-tag": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "vlan-tag": { ++ "type": "integer" ++ }, ++ "zones": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "cidr", ++ "vlan-tag", ++ "life", ++ "space-tag", ++ "zones" ++ ] ++ }, ++ "SubnetsFilters": { ++ "type": "object", ++ "properties": { ++ "space-tag": { ++ "type": "string" ++ }, ++ "zone": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ZoneResult": { ++ "type": "object", ++ "properties": { ++ "available": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "available" ++ ] ++ }, ++ "ZoneResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ZoneResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Undertaker", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelInfo": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/UndertakerModelInfoResult" ++ } ++ } ++ }, ++ "ProcessDyingModel": { ++ "type": "object" ++ }, ++ "RemoveModel": { ++ "type": "object" ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UpdateStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchModelResources": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "UndertakerModelInfo": { ++ "type": "object", ++ "properties": { ++ "global-name": { ++ "type": "string" ++ }, ++ "is-system": { ++ "type": "boolean" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "name", ++ "global-name", ++ "is-system", ++ "life" ++ ] ++ }, ++ "UndertakerModelInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UndertakerModelInfo" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UnitAssigner", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AssignUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "WatchUnitAssignments": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Uniter", ++ "Version": 5, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "APIAddresses": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "APIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/APIHostPortsResult" ++ } ++ } ++ }, ++ "Actions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ActionResults" ++ } ++ } ++ }, ++ "AddMetricBatches": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MetricBatchParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AddUnitStorage": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StoragesAddParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "AllMachinePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MachinePortsResults" ++ } ++ } ++ }, ++ "ApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ApplicationStatusResults" ++ } ++ } ++ }, ++ "AssignedMachine": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "AvailabilityZone": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "BeginActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "CACert": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/BytesResult" ++ } ++ } ++ }, ++ "CharmArchiveSha256": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/CharmURLs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "CharmModifiedVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/IntResults" ++ } ++ } ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "ClearResolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ClosePorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ConfigSettingsResults" ++ } ++ } ++ }, ++ "CurrentModel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelResult" ++ } ++ } ++ }, ++ "Destroy": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyAllSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "DestroyUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnsureDead": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnterScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "FinishActions": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/ActionExecutionResults" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "GetMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/MeterStatusResults" ++ } ++ } ++ }, ++ "GetPrincipal": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringBoolResults" ++ } ++ } ++ }, ++ "HasSubordinates": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/BoolResults" ++ } ++ } ++ }, ++ "JoinedRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsResults" ++ } ++ } ++ }, ++ "LeaveScope": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Life": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "Merge": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/MergeLeadershipSettingsBulkParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "ModelConfig": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/ModelConfigResult" ++ } ++ } ++ }, ++ "ModelUUID": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "NetworkInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/NetworkInfoParams" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NetworkInfoResults" ++ } ++ } ++ }, ++ "OpenPorts": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesPortRanges" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "PrivateAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "ProviderType": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "PublicAddress": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ }, ++ "Read": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/GetLeadershipSettingsBulkResults" ++ } ++ } ++ }, ++ "ReadRemoteSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitPairs" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "ReadSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/SettingsResults" ++ } ++ } ++ }, ++ "Relation": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RelationById": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationResults" ++ } ++ } ++ }, ++ "RemoveStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RequestReboot": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Resolved": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ResolvedModeResults" ++ } ++ } ++ }, ++ "SLALevel": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "SetAgentStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetApplicationStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetCharmURL": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesCharmURL" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetUnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/SetStatus" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityWorkloadVersions" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "StorageAttachmentLife": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/LifeResults" ++ } ++ } ++ }, ++ "StorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentResults" ++ } ++ } ++ }, ++ "UnitStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StatusResults" ++ } ++ } ++ }, ++ "UnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StorageAttachmentIdsResults" ++ } ++ } ++ }, ++ "UpdateSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnitsSettings" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Watch": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchAPIHostPorts": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchActionNotifications": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchConfigSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchForModelConfigChanges": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "WatchLeadershipSettings": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchMeterStatus": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchRelationUnits": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/RelationUnits" ++ }, ++ "Result": { ++ "$ref": "#/definitions/RelationUnitsWatchResults" ++ } ++ } ++ }, ++ "WatchStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitAddresses": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ }, ++ "WatchUnitRelations": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WatchUnitStorageAttachments": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringsWatchResults" ++ } ++ } ++ }, ++ "WorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/StringResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "APIHostPortsResult": { ++ "type": "object", ++ "properties": { ++ "servers": { ++ "type": "array", ++ "items": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/HostPort" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "servers" ++ ] ++ }, ++ "Action": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "parameters": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "receiver": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "receiver", ++ "name" ++ ] ++ }, ++ "ActionExecutionResult": { ++ "type": "object", ++ "properties": { ++ "action-tag": { ++ "type": "string" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "action-tag", ++ "status" ++ ] ++ }, ++ "ActionExecutionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionExecutionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResult": { ++ "type": "object", ++ "properties": { ++ "action": { ++ "$ref": "#/definitions/Action" ++ }, ++ "completed": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "enqueued": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "message": { ++ "type": "string" ++ }, ++ "output": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "started": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ActionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ActionResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Address": { ++ "type": "object", ++ "properties": { ++ "scope": { ++ "type": "string" ++ }, ++ "space-name": { ++ "type": "string" ++ }, ++ "type": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "type", ++ "scope" ++ ] ++ }, ++ "ApplicationStatusResult": { ++ "type": "object", ++ "properties": { ++ "application": { ++ "$ref": "#/definitions/StatusResult" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "units": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application", ++ "units" ++ ] ++ }, ++ "ApplicationStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ApplicationStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "BoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/BoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "BytesResult": { ++ "type": "object", ++ "properties": { ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "CharmRelation": { ++ "type": "object", ++ "properties": { ++ "interface": { ++ "type": "string" ++ }, ++ "limit": { ++ "type": "integer" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "optional": { ++ "type": "boolean" ++ }, ++ "role": { ++ "type": "string" ++ }, ++ "scope": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "role", ++ "interface", ++ "optional", ++ "limit", ++ "scope" ++ ] ++ }, ++ "CharmURL": { ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "url" ++ ] ++ }, ++ "CharmURLs": { ++ "type": "object", ++ "properties": { ++ "urls": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/CharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "urls" ++ ] ++ }, ++ "ConfigSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "ConfigSettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ConfigSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Endpoint": { ++ "type": "object", ++ "properties": { ++ "application-name": { ++ "type": "string" ++ }, ++ "relation": { ++ "$ref": "#/definitions/CharmRelation" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-name", ++ "relation" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesCharmURL": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityCharmURL" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesPortRanges": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityCharmURL": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "charm-url" ++ ] ++ }, ++ "EntityPortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "protocol", ++ "from-port", ++ "to-port" ++ ] ++ }, ++ "EntityStatusArgs": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "status": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "status", ++ "info", ++ "data" ++ ] ++ }, ++ "EntityWorkloadVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "workload-version": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "workload-version" ++ ] ++ }, ++ "EntityWorkloadVersions": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityWorkloadVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsBulkResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/GetLeadershipSettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "GetLeadershipSettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "HostPort": { ++ "type": "object", ++ "properties": { ++ "Address": { ++ "$ref": "#/definitions/Address" ++ }, ++ "port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Address", ++ "port" ++ ] ++ }, ++ "IntResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "IntResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/IntResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "InterfaceAddress": { ++ "type": "object", ++ "properties": { ++ "cidr": { ++ "type": "string" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "value", ++ "cidr" ++ ] ++ }, ++ "LifeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life" ++ ] ++ }, ++ "LifeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/LifeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachinePortRange": { ++ "type": "object", ++ "properties": { ++ "port-range": { ++ "$ref": "#/definitions/PortRange" ++ }, ++ "relation-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit-tag", ++ "relation-tag", ++ "port-range" ++ ] ++ }, ++ "MachinePortsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ports": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortRange" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ports" ++ ] ++ }, ++ "MachinePortsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachinePortsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "MergeLeadershipSettingsBulkParams": { ++ "type": "object", ++ "properties": { ++ "params": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MergeLeadershipSettingsParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "params" ++ ] ++ }, ++ "MergeLeadershipSettingsParam": { ++ "type": "object", ++ "properties": { ++ "application-tag": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "application-tag", ++ "settings" ++ ] ++ }, ++ "MeterStatusResult": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "info": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "code", ++ "info" ++ ] ++ }, ++ "MeterStatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MeterStatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Metric": { ++ "type": "object", ++ "properties": { ++ "key": { ++ "type": "string" ++ }, ++ "time": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "value": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "key", ++ "value", ++ "time" ++ ] ++ }, ++ "MetricBatch": { ++ "type": "object", ++ "properties": { ++ "charm-url": { ++ "type": "string" ++ }, ++ "created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "metrics": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Metric" ++ } ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "uuid", ++ "charm-url", ++ "created", ++ "metrics" ++ ] ++ }, ++ "MetricBatchParam": { ++ "type": "object", ++ "properties": { ++ "batch": { ++ "$ref": "#/definitions/MetricBatch" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "batch" ++ ] ++ }, ++ "MetricBatchParams": { ++ "type": "object", ++ "properties": { ++ "batches": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MetricBatchParam" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "batches" ++ ] ++ }, ++ "ModelConfigResult": { ++ "type": "object", ++ "properties": { ++ "config": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "config" ++ ] ++ }, ++ "ModelResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "name": { ++ "type": "string" ++ }, ++ "uuid": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "name", ++ "uuid" ++ ] ++ }, ++ "NetworkInfo": { ++ "type": "object", ++ "properties": { ++ "addresses": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/InterfaceAddress" ++ } ++ }, ++ "interface-name": { ++ "type": "string" ++ }, ++ "mac-address": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mac-address", ++ "interface-name", ++ "addresses" ++ ] ++ }, ++ "NetworkInfoParams": { ++ "type": "object", ++ "properties": { ++ "bindings": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "bindings" ++ ] ++ }, ++ "NetworkInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "network-info": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NetworkInfo" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "network-info" ++ ] ++ }, ++ "NetworkInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/NetworkInfoResult" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "PortRange": { ++ "type": "object", ++ "properties": { ++ "from-port": { ++ "type": "integer" ++ }, ++ "protocol": { ++ "type": "string" ++ }, ++ "to-port": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "from-port", ++ "to-port", ++ "protocol" ++ ] ++ }, ++ "RelationIds": { ++ "type": "object", ++ "properties": { ++ "relation-ids": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-ids" ++ ] ++ }, ++ "RelationResult": { ++ "type": "object", ++ "properties": { ++ "endpoint": { ++ "$ref": "#/definitions/Endpoint" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "integer" ++ }, ++ "key": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "life", ++ "id", ++ "key", ++ "endpoint" ++ ] ++ }, ++ "RelationResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "RelationUnit": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit" ++ ] ++ }, ++ "RelationUnitPair": { ++ "type": "object", ++ "properties": { ++ "local-unit": { ++ "type": "string" ++ }, ++ "relation": { ++ "type": "string" ++ }, ++ "remote-unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "local-unit", ++ "remote-unit" ++ ] ++ }, ++ "RelationUnitPairs": { ++ "type": "object", ++ "properties": { ++ "relation-unit-pairs": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitPair" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-unit-pairs" ++ ] ++ }, ++ "RelationUnitSettings": { ++ "type": "object", ++ "properties": { ++ "relation": { ++ "type": "string" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation", ++ "unit", ++ "settings" ++ ] ++ }, ++ "RelationUnits": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnit" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsChange": { ++ "type": "object", ++ "properties": { ++ "changed": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "$ref": "#/definitions/UnitSettings" ++ } ++ } ++ }, ++ "departed": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changed" ++ ] ++ }, ++ "RelationUnitsSettings": { ++ "type": "object", ++ "properties": { ++ "relation-units": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitSettings" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "relation-units" ++ ] ++ }, ++ "RelationUnitsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "$ref": "#/definitions/RelationUnitsChange" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ }, ++ "RelationUnitsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/RelationUnitsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "ResolvedModeResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "mode": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "mode" ++ ] ++ }, ++ "ResolvedModeResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ResolvedModeResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "SetStatus": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityStatusArgs" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "SettingsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "settings": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "string" ++ } ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "settings" ++ ] ++ }, ++ "SettingsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/SettingsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StatusResult": { ++ "type": "object", ++ "properties": { ++ "data": { ++ "type": "object", ++ "patternProperties": { ++ ".*": { ++ "type": "object", ++ "additionalProperties": true ++ } ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "id": { ++ "type": "string" ++ }, ++ "info": { ++ "type": "string" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "since": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "status": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "id", ++ "life", ++ "status", ++ "info", ++ "data", ++ "since" ++ ] ++ }, ++ "StatusResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StatusResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StorageAddParams": { ++ "type": "object", ++ "properties": { ++ "name": { ++ "type": "string" ++ }, ++ "storage": { ++ "$ref": "#/definitions/StorageConstraints" ++ }, ++ "unit": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "unit", ++ "name", ++ "storage" ++ ] ++ }, ++ "StorageAttachment": { ++ "type": "object", ++ "properties": { ++ "kind": { ++ "type": "integer" ++ }, ++ "life": { ++ "type": "string" ++ }, ++ "location": { ++ "type": "string" ++ }, ++ "owner-tag": { ++ "type": "string" ++ }, ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "owner-tag", ++ "unit-tag", ++ "kind", ++ "location", ++ "life" ++ ] ++ }, ++ "StorageAttachmentId": { ++ "type": "object", ++ "properties": { ++ "storage-tag": { ++ "type": "string" ++ }, ++ "unit-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storage-tag", ++ "unit-tag" ++ ] ++ }, ++ "StorageAttachmentIds": { ++ "type": "object", ++ "properties": { ++ "ids": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentId" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "ids" ++ ] ++ }, ++ "StorageAttachmentIdsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachmentIds" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentIdsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentIdsResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageAttachmentResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/StorageAttachment" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StorageAttachmentResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAttachmentResult" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StorageConstraints": { ++ "type": "object", ++ "properties": { ++ "count": { ++ "type": "integer" ++ }, ++ "pool": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StoragesAddParams": { ++ "type": "object", ++ "properties": { ++ "storages": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StorageAddParams" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "storages" ++ ] ++ }, ++ "StringBoolResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "ok": { ++ "type": "boolean" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result", ++ "ok" ++ ] ++ }, ++ "StringBoolResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringBoolResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "result" ++ ] ++ }, ++ "StringResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "StringsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "StringsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id" ++ ] ++ }, ++ "StringsWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/StringsWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "UnitSettings": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "type": "integer" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "Upgrader", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "DesiredVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/VersionResults" ++ } ++ } ++ }, ++ "SetTools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntitiesVersion" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ToolsResults" ++ } ++ } ++ }, ++ "WatchAPIVersion": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/NotifyWatchResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "Binary": { ++ "type": "object", ++ "properties": { ++ "Arch": { ++ "type": "string" ++ }, ++ "Number": { ++ "$ref": "#/definitions/Number" ++ }, ++ "Series": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Number", ++ "Series", ++ "Arch" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "EntitiesVersion": { ++ "type": "object", ++ "properties": { ++ "agent-tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityVersion" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "agent-tools" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityVersion": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ }, ++ "tools": { ++ "$ref": "#/definitions/Version" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "tools" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "NotifyWatchResult": { ++ "type": "object", ++ "properties": { ++ "NotifyWatcherId": { ++ "type": "string" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "NotifyWatcherId" ++ ] ++ }, ++ "NotifyWatchResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/NotifyWatchResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Number": { ++ "type": "object", ++ "properties": { ++ "Build": { ++ "type": "integer" ++ }, ++ "Major": { ++ "type": "integer" ++ }, ++ "Minor": { ++ "type": "integer" ++ }, ++ "Patch": { ++ "type": "integer" ++ }, ++ "Tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "Major", ++ "Minor", ++ "Tag", ++ "Patch", ++ "Build" ++ ] ++ }, ++ "Tools": { ++ "type": "object", ++ "properties": { ++ "sha256": { ++ "type": "string" ++ }, ++ "size": { ++ "type": "integer" ++ }, ++ "url": { ++ "type": "string" ++ }, ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version", ++ "url", ++ "size" ++ ] ++ }, ++ "ToolsResult": { ++ "type": "object", ++ "properties": { ++ "disable-ssl-hostname-verification": { ++ "type": "boolean" ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "tools": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Tools" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tools", ++ "disable-ssl-hostname-verification" ++ ] ++ }, ++ "ToolsResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ToolsResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Version": { ++ "type": "object", ++ "properties": { ++ "version": { ++ "$ref": "#/definitions/Binary" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "version" ++ ] ++ }, ++ "VersionResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "version": { ++ "$ref": "#/definitions/Number" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "VersionResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/VersionResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "UserManager", ++ "Version": 1, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/AddUsers" ++ }, ++ "Result": { ++ "$ref": "#/definitions/AddUserResults" ++ } ++ } ++ }, ++ "DisableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "EnableUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "RemoveUser": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/Entities" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "SetPassword": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/EntityPasswords" ++ }, ++ "Result": { ++ "$ref": "#/definitions/ErrorResults" ++ } ++ } ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "Params": { ++ "$ref": "#/definitions/UserInfoRequest" ++ }, ++ "Result": { ++ "$ref": "#/definitions/UserInfoResults" ++ } ++ } ++ } ++ }, ++ "definitions": { ++ "AddUser": { ++ "type": "object", ++ "properties": { ++ "display-name": { ++ "type": "string" ++ }, ++ "password": { ++ "type": "string" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name" ++ ] ++ }, ++ "AddUserResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "secret-key": { ++ "type": "array", ++ "items": { ++ "type": "integer" ++ } ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "AddUserResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUserResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "AddUsers": { ++ "type": "object", ++ "properties": { ++ "users": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/AddUser" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "users" ++ ] ++ }, ++ "Entities": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities" ++ ] ++ }, ++ "Entity": { ++ "type": "object", ++ "properties": { ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag" ++ ] ++ }, ++ "EntityPassword": { ++ "type": "object", ++ "properties": { ++ "password": { ++ "type": "string" ++ }, ++ "tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "tag", ++ "password" ++ ] ++ }, ++ "EntityPasswords": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/EntityPassword" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "changes" ++ ] ++ }, ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "ErrorResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/ErrorResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "UserInfo": { ++ "type": "object", ++ "properties": { ++ "access": { ++ "type": "string" ++ }, ++ "created-by": { ++ "type": "string" ++ }, ++ "date-created": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "disabled": { ++ "type": "boolean" ++ }, ++ "display-name": { ++ "type": "string" ++ }, ++ "last-connection": { ++ "type": "string", ++ "format": "date-time" ++ }, ++ "username": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "username", ++ "display-name", ++ "access", ++ "created-by", ++ "date-created", ++ "disabled" ++ ] ++ }, ++ "UserInfoRequest": { ++ "type": "object", ++ "properties": { ++ "entities": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/Entity" ++ } ++ }, ++ "include-disabled": { ++ "type": "boolean" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "entities", ++ "include-disabled" ++ ] ++ }, ++ "UserInfoResult": { ++ "type": "object", ++ "properties": { ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "result": { ++ "$ref": "#/definitions/UserInfo" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "UserInfoResults": { ++ "type": "object", ++ "properties": { ++ "results": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/UserInfoResult" ++ } ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "results" ++ ] ++ } ++ } ++ } ++ }, ++ { ++ "Name": "VolumeAttachmentsWatcher", ++ "Version": 2, ++ "Schema": { ++ "type": "object", ++ "properties": { ++ "Next": { ++ "type": "object", ++ "properties": { ++ "Result": { ++ "$ref": "#/definitions/MachineStorageIdsWatchResult" ++ } ++ } ++ }, ++ "Stop": { ++ "type": "object" ++ } ++ }, ++ "definitions": { ++ "Error": { ++ "type": "object", ++ "properties": { ++ "code": { ++ "type": "string" ++ }, ++ "info": { ++ "$ref": "#/definitions/ErrorInfo" ++ }, ++ "message": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "message", ++ "code" ++ ] ++ }, ++ "ErrorInfo": { ++ "type": "object", ++ "properties": { ++ "macaroon": { ++ "$ref": "#/definitions/Macaroon" ++ }, ++ "macaroon-path": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false ++ }, ++ "Macaroon": { ++ "type": "object", ++ "additionalProperties": false ++ }, ++ "MachineStorageId": { ++ "type": "object", ++ "properties": { ++ "attachment-tag": { ++ "type": "string" ++ }, ++ "machine-tag": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "machine-tag", ++ "attachment-tag" ++ ] ++ }, ++ "MachineStorageIdsWatchResult": { ++ "type": "object", ++ "properties": { ++ "changes": { ++ "type": "array", ++ "items": { ++ "$ref": "#/definitions/MachineStorageId" ++ } ++ }, ++ "error": { ++ "$ref": "#/definitions/Error" ++ }, ++ "watcher-id": { ++ "type": "string" ++ } ++ }, ++ "additionalProperties": false, ++ "required": [ ++ "watcher-id", ++ "changes" ++ ] ++ } ++ } ++ } ++ } ++] diff --cc modules/libjuju/juju/client/schemas-juju-latest.json index 0000000,0000000..6a2593e new file mode 120000 --- /dev/null +++ b/modules/libjuju/juju/client/schemas-juju-latest.json @@@ -1,0 -1,0 +1,1 @@@ ++schemas-juju-2.3-alpha1.json diff --cc modules/libjuju/juju/cloud.py index 0000000,0000000..e4793ee new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/cloud.py @@@ -1,0 -1,0 +1,81 @@@ ++class Cloud(object): ++ """Cloud ++ ++ :ivar name: Name of the cloud ++ ++ """ ++ def add_credential(self, credential): ++ """Add or replaces credentials for this cloud. ++ ++ :param `juju.Credential` credential: The Credential to add ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_credentials(self): ++ """Return list of all credentials for this cloud. ++ ++ """ ++ raise NotImplementedError() ++ ++ def remove_credential(self, credential_name): ++ """Remove a credential for this cloud. ++ ++ :param str credential_name: Name of the credential to remove ++ ++ """ ++ raise NotImplementedError() ++ ++ def bootstrap( ++ self, controller_name, region=None, agent_version=None, ++ auto_upgrade=False, bootstrap_constraints=None, ++ bootstrap_series=None, config=None, constraints=None, ++ credential=None, default_model=None, keep_broken=False, ++ metadata_source=None, no_gui=False, to=None, ++ upload_tools=False): ++ ++ """Initialize a cloud environment. ++ ++ :param str controller_name: Name of controller to create ++ :param str region: Cloud region in which to bootstrap ++ :param str agent_version: Version of tools to use for Juju agents ++ :param bool auto_upgrade: Upgrade to latest path release tools on first ++ bootstrap ++ :param bootstrap_constraints: Constraints for the bootstrap machine ++ :type bootstrap_constraints: :class:`juju.Constraints` ++ :param str bootstrap_series: Series of the bootstrap machine ++ :param dict config: Controller configuration ++ :param constraints: Default constraints for all future workload ++ machines ++ :type constraints: :class:`juju.Constraints` ++ :param credential: Credential to use when bootstrapping ++ :type credential: :class:`juju.Credential` ++ :param str default_model: Name to give the default model ++ :param bool keep_broken: Don't destroy model if bootstrap fails ++ :param str metadata_source: Local path to use as tools and/or metadata ++ source ++ :param bool no_gui: Don't install the Juju GUI in the controller when ++ bootstrapping ++ :param str to: Placement directive for bootstrap node (typically used ++ with MAAS) ++ :param bool upload_tools: Upload local version of tools before ++ bootstrapping ++ ++ """ ++ raise NotImplementedError() ++ ++ def set_default_credential(self, credential_name): ++ """Set the default credentials for this cloud. ++ ++ :param str credential_name: Credential to make default ++ ++ """ ++ raise NotImplementedError() ++ ++ def set_default_region(self, region): ++ """Set the default region for this cloud. ++ ++ :param str region: Name of region to make default ++ ++ """ ++ raise NotImplementedError() diff --cc modules/libjuju/juju/constraints.py index 0000000,0000000..998862d new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/constraints.py @@@ -1,0 -1,0 +1,84 @@@ ++# ++# Module that parses constraints ++# ++# The current version of juju core expects the client to take ++# constraints given in the form "mem=10G foo=bar" and parse them into ++# json that looks like {"mem": 10240, "foo": "bar"}. This module helps us ++# accomplish that task. ++# ++# We do not attempt to duplicate the checking done in ++# client/_client.py:Value here. That class will verify that the ++# constraints keys are valid, and that we can successfully dump the ++# constraints dict to json. ++# ++# Once https://bugs.launchpad.net/juju/+bug/1645402 is addressed, this ++# module should be deprecated. ++# ++ ++import re ++ ++# Matches on a string specifying memory size ++MEM = re.compile('^[1-9][0-9]*[MGTP]$') ++ ++# Multiplication factors to get Megabytes ++# https://github.com/juju/juju/blob/master/constraints/constraints.go#L666 ++FACTORS = { ++ "M": 1, ++ "G": 1024, ++ "T": 1024 * 1024, ++ "P": 1024 * 1024 * 1024 ++} ++ ++SNAKE1 = re.compile(r'(.)([A-Z][a-z]+)') ++SNAKE2 = re.compile('([a-z0-9])([A-Z])') ++ ++ ++def parse(constraints): ++ """ ++ Constraints must be expressed as a string containing only spaces ++ and key value pairs joined by an '='. ++ ++ """ ++ if not constraints: ++ return None ++ ++ if type(constraints) is dict: ++ # Fowards compatibilty: already parsed ++ return constraints ++ ++ constraints = { ++ normalize_key(k): normalize_value(v) for k, v in [ ++ s.split("=") for s in constraints.split(" ")]} ++ ++ return constraints ++ ++ ++def normalize_key(key): ++ key = key.strip() ++ ++ key = key.replace("-", "_") # Our _client lib wants "_" in place of "-" ++ ++ # Convert camelCase to snake_case ++ key = SNAKE1.sub(r'\1_\2', key) ++ key = SNAKE2.sub(r'\1_\2', key).lower() ++ ++ return key ++ ++ ++def normalize_value(value): ++ value = value.strip() ++ ++ if MEM.match(value): ++ # Translate aliases to Megabytes. e.g. 1G = 10240 ++ return int(value[:-1]) * FACTORS[value[-1:]] ++ ++ if "," in value: ++ # Handle csv strings. ++ values = value.split(",") ++ values = [normalize_value(v) for v in values] ++ return values ++ ++ if value.isdigit(): ++ return int(value) ++ ++ return value diff --cc modules/libjuju/juju/controller.py index 0000000,0000000..9b452c7 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/controller.py @@@ -1,0 -1,0 +1,331 @@@ ++import asyncio ++import logging ++ ++from . import tag ++from . import utils ++from .client import client ++from .client import connection ++from .model import Model ++ ++log = logging.getLogger(__name__) ++ ++ ++class Controller(object): ++ def __init__(self, loop=None, ++ max_frame_size=connection.Connection.DEFAULT_FRAME_SIZE): ++ """Instantiate a new Controller. ++ ++ One of the connect_* methods will need to be called before this ++ object can be used for anything interesting. ++ ++ :param loop: an asyncio event loop ++ ++ """ ++ self.loop = loop or asyncio.get_event_loop() ++ self.max_frame_size = None ++ self.connection = None ++ self.controller_name = None ++ ++ async def connect( ++ self, endpoint, username, password, cacert=None, macaroons=None): ++ """Connect to an arbitrary Juju controller. ++ ++ """ ++ self.connection = await connection.Connection.connect( ++ endpoint, None, username, password, cacert, macaroons, ++ max_frame_size=self.max_frame_size) ++ ++ async def connect_current(self): ++ """Connect to the current Juju controller. ++ ++ """ ++ self.connection = ( ++ await connection.Connection.connect_current_controller( ++ max_frame_size=self.max_frame_size)) ++ ++ async def connect_controller(self, controller_name): ++ """Connect to a Juju controller by name. ++ ++ """ ++ self.connection = ( ++ await connection.Connection.connect_controller( ++ controller_name, max_frame_size=self.max_frame_size)) ++ self.controller_name = controller_name ++ ++ async def disconnect(self): ++ """Shut down the watcher task and close websockets. ++ ++ """ ++ if self.connection and self.connection.is_open: ++ log.debug('Closing controller connection') ++ await self.connection.close() ++ self.connection = None ++ ++ async def add_model( ++ self, model_name, cloud_name=None, credential_name=None, ++ owner=None, config=None, region=None): ++ """Add a model to this controller. ++ ++ :param str model_name: Name to give the new model. ++ :param str cloud_name: Name of the cloud in which to create the ++ model, e.g. 'aws'. Defaults to same cloud as controller. ++ :param str credential_name: Name of the credential to use when ++ creating the model. Defaults to current credential. If you ++ pass a credential_name, you must also pass a cloud_name, ++ even if it's the default cloud. ++ :param str owner: Username that will own the model. Defaults to ++ the current user. ++ :param dict config: Model configuration. ++ :param str region: Region in which to create the model. ++ ++ """ ++ model_facade = client.ModelManagerFacade.from_connection( ++ self.connection) ++ ++ owner = owner or self.connection.info['user-info']['identity'] ++ cloud_name = cloud_name or await self.get_cloud() ++ ++ if credential_name: ++ credential = tag.credential( ++ cloud_name, ++ tag.untag('user-', owner), ++ credential_name ++ ) ++ else: ++ credential = None ++ ++ log.debug('Creating model %s', model_name) ++ ++ model_info = await model_facade.CreateModel( ++ tag.cloud(cloud_name), ++ config, ++ credential, ++ model_name, ++ owner, ++ region ++ ) ++ ++ # Add our ssh key to the model, to work around ++ # https://bugs.launchpad.net/juju/+bug/1643076 ++ try: ++ ssh_key = await utils.read_ssh_key(loop=self.loop) ++ ++ if self.controller_name: ++ model_name = "{}:{}".format(self.controller_name, model_name) ++ ++ cmd = ['juju', 'add-ssh-key', '-m', model_name, ssh_key] ++ ++ await utils.execute_process(*cmd, log=log, loop=self.loop) ++ except Exception: ++ log.exception( ++ "Could not add ssh key to model. You will not be able " ++ "to ssh into machines in this model. " ++ "Manually running `juju add-ssh-key ` in the cli " ++ "may fix this problem.") ++ ++ model = Model() ++ await model.connect( ++ self.connection.endpoint, ++ model_info.uuid, ++ self.connection.username, ++ self.connection.password, ++ self.connection.cacert, ++ self.connection.macaroons, ++ loop=self.loop, ++ ) ++ ++ return model ++ ++ async def destroy_models(self, *uuids): ++ """Destroy one or more models. ++ ++ :param str \*uuids: UUIDs of models to destroy ++ ++ """ ++ model_facade = client.ModelManagerFacade.from_connection( ++ self.connection) ++ ++ log.debug( ++ 'Destroying model%s %s', ++ '' if len(uuids) == 1 else 's', ++ ', '.join(uuids) ++ ) ++ ++ await model_facade.DestroyModels([ ++ client.Entity(tag.model(uuid)) ++ for uuid in uuids ++ ]) ++ destroy_model = destroy_models ++ ++ async def add_user(self, username, password=None, display_name=None): ++ """Add a user to this controller. ++ ++ :param str username: Username ++ :param str display_name: Display name ++ :param str acl: Access control, e.g. 'read' ++ :param list models: Models to which the user is granted access ++ ++ """ ++ if not display_name: ++ display_name = username ++ user_facade = client.UserManagerFacade.from_connection(self.connection) ++ users = [{'display_name': display_name, ++ 'password': password, ++ 'username': username}] ++ return await user_facade.AddUser(users) ++ ++ async def change_user_password(self, username, password): ++ """Change the password for a user in this controller. ++ ++ :param str username: Username ++ :param str password: New password ++ ++ """ ++ user_facade = client.UserManagerFacade.from_connection(self.connection) ++ entity = client.EntityPassword(password, tag.user(username)) ++ return await user_facade.SetPassword([entity]) ++ ++ async def destroy(self, destroy_all_models=False): ++ """Destroy this controller. ++ ++ :param bool destroy_all_models: Destroy all hosted models in the ++ controller. ++ ++ """ ++ controller_facade = client.ControllerFacade.from_connection( ++ self.connection) ++ return await controller_facade.DestroyController(destroy_all_models) ++ ++ async def disable_user(self, username): ++ """Disable a user. ++ ++ :param str username: Username ++ ++ """ ++ user_facade = client.UserManagerFacade.from_connection(self.connection) ++ entity = client.Entity(tag.user(username)) ++ return await user_facade.DisableUser([entity]) ++ ++ async def enable_user(self, username): ++ """Re-enable a previously disabled user. ++ ++ """ ++ user_facade = client.UserManagerFacade.from_connection(self.connection) ++ entity = client.Entity(tag.user(username)) ++ return await user_facade.EnableUser([entity]) ++ ++ def kill(self): ++ """Forcibly terminate all machines and other associated resources for ++ this controller. ++ ++ """ ++ raise NotImplementedError() ++ ++ async def get_cloud(self): ++ """ ++ Get the name of the cloud that this controller lives on. ++ """ ++ cloud_facade = client.CloudFacade.from_connection(self.connection) ++ ++ result = await cloud_facade.Clouds() ++ cloud = list(result.clouds.keys())[0] # only lives on one cloud ++ return tag.untag('cloud-', cloud) ++ ++ async def get_models(self, all_=False, username=None): ++ """Return list of available models on this controller. ++ ++ :param bool all_: List all models, regardless of user accessibilty ++ (admin use only) ++ :param str username: User for which to list models (admin use only) ++ ++ """ ++ controller_facade = client.ControllerFacade.from_connection( ++ self.connection) ++ return await controller_facade.AllModels() ++ ++ def get_payloads(self, *patterns): ++ """Return list of known payloads. ++ ++ :param str \*patterns: Patterns to match against ++ ++ Each pattern will be checked against the following info in Juju:: ++ ++ - unit name ++ - machine id ++ - payload type ++ - payload class ++ - payload id ++ - payload tag ++ - payload status ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_users(self, all_=False): ++ """Return list of users that can connect to this controller. ++ ++ :param bool all_: Include disabled users ++ ++ """ ++ raise NotImplementedError() ++ ++ def login(self): ++ """Log in to this controller. ++ ++ """ ++ raise NotImplementedError() ++ ++ def logout(self, force=False): ++ """Log out of this controller. ++ ++ :param bool force: Don't fail even if user not previously logged in ++ with a password ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_model(self, name): ++ """Get a model by name. ++ ++ :param str name: Model name ++ ++ """ ++ raise NotImplementedError() ++ ++ async def get_user(self, username, include_disabled=False): ++ """Get a user by name. ++ ++ :param str username: Username ++ ++ """ ++ client_facade = client.UserManagerFacade.from_connection( ++ self.connection) ++ user = tag.user(username) ++ return await client_facade.UserInfo([client.Entity(user)], ++ include_disabled) ++ ++ async def grant(self, username, acl='login'): ++ """Set access level of the given user on the controller ++ ++ :param str username: Username ++ :param str acl: Access control ('login', 'add-model' or 'superuser') ++ ++ """ ++ controller_facade = client.ControllerFacade.from_connection( ++ self.connection) ++ user = tag.user(username) ++ await self.revoke(username) ++ changes = client.ModifyControllerAccess(acl, 'grant', user) ++ return await controller_facade.ModifyControllerAccess([changes]) ++ ++ async def revoke(self, username): ++ """Removes all access from a controller ++ ++ :param str username: username ++ ++ """ ++ controller_facade = client.ControllerFacade.from_connection( ++ self.connection) ++ user = tag.user(username) ++ changes = client.ModifyControllerAccess('login', 'revoke', user) ++ return await controller_facade.ModifyControllerAccess([changes]) diff --cc modules/libjuju/juju/credential.py index 0000000,0000000..e69de29 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/credential.py diff --cc modules/libjuju/juju/delta.py index 0000000,0000000..b1eba23 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/delta.py @@@ -1,0 -1,0 +1,79 @@@ ++from .client import client ++ ++ ++def get_entity_delta(d): ++ return _delta_types[d.entity](d.deltas) ++ ++ ++def get_entity_class(entity_type): ++ return _delta_types[entity_type].get_entity_class() ++ ++ ++class EntityDelta(client.Delta): ++ def get_id(self): ++ return self.data['id'] ++ ++ @classmethod ++ def get_entity_class(self): ++ return None ++ ++ ++class ActionDelta(EntityDelta): ++ @classmethod ++ def get_entity_class(self): ++ from .action import Action ++ return Action ++ ++ ++class ApplicationDelta(EntityDelta): ++ def get_id(self): ++ return self.data['name'] ++ ++ @classmethod ++ def get_entity_class(self): ++ from .application import Application ++ return Application ++ ++ ++class AnnotationDelta(EntityDelta): ++ def get_id(self): ++ return self.data['tag'] ++ ++ @classmethod ++ def get_entity_class(self): ++ from .annotation import Annotation ++ return Annotation ++ ++ ++class MachineDelta(EntityDelta): ++ @classmethod ++ def get_entity_class(self): ++ from .machine import Machine ++ return Machine ++ ++ ++class UnitDelta(EntityDelta): ++ def get_id(self): ++ return self.data['name'] ++ ++ @classmethod ++ def get_entity_class(self): ++ from .unit import Unit ++ return Unit ++ ++ ++class RelationDelta(EntityDelta): ++ @classmethod ++ def get_entity_class(self): ++ from .relation import Relation ++ return Relation ++ ++ ++_delta_types = { ++ 'action': ActionDelta, ++ 'application': ApplicationDelta, ++ 'annotation': AnnotationDelta, ++ 'machine': MachineDelta, ++ 'unit': UnitDelta, ++ 'relation': RelationDelta, ++} diff --cc modules/libjuju/juju/errors.py index 0000000,0000000..de52174 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/errors.py @@@ -1,0 -1,0 +1,16 @@@ ++class JujuError(Exception): ++ pass ++ ++ ++class JujuAPIError(JujuError): ++ def __init__(self, result): ++ self.result = result ++ self.message = result['error'] ++ self.error_code = result.get('error-code') ++ self.response = result['response'] ++ self.request_id = result['request-id'] ++ super().__init__(self.message) ++ ++ ++class JujuConnectionError(ConnectionError, JujuError): ++ pass diff --cc modules/libjuju/juju/exceptions.py index 0000000,0000000..bcf07b6 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/exceptions.py @@@ -1,0 -1,0 +1,2 @@@ ++class DeadEntityException(Exception): ++ pass diff --cc modules/libjuju/juju/juju.py index 0000000,0000000..a9fcbbe new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/juju.py @@@ -1,0 -1,0 +1,118 @@@ ++class Juju(object): ++ def add_cloud(self, name, definition, replace=False): ++ """Add a user-defined cloud to Juju from among known cloud types. ++ ++ :param str name: Name of cloud ++ :param dict definition: Cloud definition ++ ++ Example cloud definition, as yaml:: ++ ++ type: openstack ++ auth-types: [ userpass ] ++ regions: ++ london: ++ endpoint: https://london.mycloud.com:35574/v3.0/ ++ ++ """ ++ raise NotImplementedError() ++ ++ def agree(self, *terms): ++ """Agree to the terms of a charm. ++ ++ :param str \*terms: Terms to agree to ++ ++ """ ++ raise NotImplementedError() ++ ++ def autoload_credentials(self): ++ """Finds cloud credentials and caches them for use by Juju when ++ bootstrapping. ++ ++ """ ++ raise NotImplementedError() ++ ++ def create_budget(self): ++ """Create a new budget. ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_agreements(self): ++ """Return list of terms to which the current user has agreed. ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_budgets(self): ++ """Return list of available budgets. ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_clouds(self): ++ """Return list of all available clouds. ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_controllers(self): ++ """Return list of all available controllers. ++ ++ (maybe move this to Cloud?) ++ """ ++ raise NotImplementedError() ++ ++ def get_plans(self, charm_url): ++ """Return list of plans available for the specified charm. ++ ++ :param str charm_url: Charm url ++ ++ """ ++ raise NotImplementedError() ++ ++ def register(self, registration_string): ++ """Register a user to a controller. ++ ++ :param str registration_string: The registration string ++ ++ """ ++ raise NotImplementedError() ++ ++ def set_budget(self, name, limit): ++ """Set a monthly budget limit. ++ ++ :param str name: Name of budget ++ :param int limit: Monthly limit ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_cloud(self, name): ++ """Get a cloud by name. ++ ++ :param str name: Name of cloud ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_controller(self, name, include_passwords=False): ++ """Get a controller by name. ++ ++ :param str name: Name of controller ++ :param bool include_passwords: Include passwords for accounts ++ ++ (maybe move this to Cloud?) ++ """ ++ raise NotImplementedError() ++ ++ def update_clouds(self): ++ """Update public cloud info available to Juju. ++ ++ """ ++ raise NotImplementedError() ++ ++ def version(self): ++ """Return the Juju version. ++ ++ """ ++ raise NotImplementedError() diff --cc modules/libjuju/juju/loop.py index 0000000,0000000..4abedfc new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/loop.py @@@ -1,0 -1,0 +1,42 @@@ ++import asyncio ++import signal ++ ++ ++def run(*steps): ++ """ ++ Helper to run one or more async functions synchronously, with graceful ++ handling of SIGINT / Ctrl-C. ++ ++ Returns the return value of the last function. ++ """ ++ if not steps: ++ return ++ ++ task = None ++ run._sigint = False # function attr to allow setting from closure ++ loop = asyncio.get_event_loop() ++ ++ def abort(): ++ task.cancel() ++ run._sigint = True ++ ++ added = False ++ try: ++ loop.add_signal_handler(signal.SIGINT, abort) ++ added = True ++ except ValueError as e: ++ # add_signal_handler doesn't work in a thread ++ if 'main thread' not in str(e): ++ raise ++ try: ++ for step in steps: ++ task = loop.create_task(step) ++ loop.run_until_complete(asyncio.wait([task], loop=loop)) ++ if run._sigint: ++ raise KeyboardInterrupt() ++ if task.exception(): ++ raise task.exception() ++ return task.result() ++ finally: ++ if added: ++ loop.remove_signal_handler(signal.SIGINT) diff --cc modules/libjuju/juju/machine.py index 0000000,0000000..23b41c6 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/machine.py @@@ -1,0 -1,0 +1,262 @@@ ++import asyncio ++import logging ++import os ++ ++from dateutil.parser import parse as parse_date ++ ++from . import model, utils ++from .client import client ++from .errors import JujuError ++ ++log = logging.getLogger(__name__) ++ ++ ++class Machine(model.ModelEntity): ++ def __init__(self, *args, **kwargs): ++ super().__init__(*args, **kwargs) ++ self.on_change(self._workaround_1695335) ++ ++ async def _workaround_1695335(self, delta, old, new, model): ++ """ ++ This is a (hacky) temporary work around for a bug in Juju where the ++ instance status and agent version fields don't get updated properly ++ by the AllWatcher. ++ ++ Deltas never contain a value for `data['agent-status']['version']`, ++ and once the `instance-status` reaches `pending`, we no longer get ++ any updates for it (the deltas come in, but the `instance-status` ++ data is always the same after that). ++ ++ To work around this, whenever a delta comes in for this machine, we ++ query FullStatus and use the data from there if and only if it's newer. ++ Luckily, the timestamps on the `since` field does seem to be accurate. ++ ++ See https://bugs.launchpad.net/juju/+bug/1695335 ++ """ ++ if delta.data.get('synthetic', False): ++ # prevent infinite loops re-processing already processed deltas ++ return ++ ++ full_status = await utils.run_with_interrupt(model.get_status(), ++ model._watch_stopping, ++ model.loop) ++ if model._watch_stopping.is_set(): ++ return ++ ++ if self.id not in full_status.machines: ++ return ++ ++ if not full_status.machines[self.id]['instance-status']['since']: ++ return ++ ++ machine = full_status.machines[self.id] ++ ++ change_log = [] ++ key_map = { ++ 'status': 'current', ++ 'info': 'message', ++ 'since': 'since', ++ } ++ ++ # handle agent version specially, because it's never set in ++ # deltas, and we don't want even a newer delta to clear it ++ agent_version = machine['agent-status']['version'] ++ if agent_version: ++ delta.data['agent-status']['version'] = agent_version ++ change_log.append(('agent-version', '', agent_version)) ++ ++ # only update (other) delta fields if status data is newer ++ status_since = parse_date(machine['instance-status']['since']) ++ delta_since = parse_date(delta.data['instance-status']['since']) ++ if status_since > delta_since: ++ for status_key in ('status', 'info', 'since'): ++ delta_key = key_map[status_key] ++ status_value = machine['instance-status'][status_key] ++ delta_value = delta.data['instance-status'][delta_key] ++ change_log.append((delta_key, delta_value, status_value)) ++ delta.data['instance-status'][delta_key] = status_value ++ ++ if change_log: ++ log.debug('Overriding machine delta with FullStatus data') ++ for log_item in change_log: ++ log.debug(' {}: {} -> {}'.format(*log_item)) ++ delta.data['synthetic'] = True ++ old_obj, new_obj = self.model.state.apply_delta(delta) ++ await model._notify_observers(delta, old_obj, new_obj) ++ ++ async def destroy(self, force=False): ++ """Remove this machine from the model. ++ ++ Blocks until the machine is actually removed. ++ ++ """ ++ facade = client.ClientFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Destroying machine %s', self.id) ++ ++ await facade.DestroyMachines(force, [self.id]) ++ return await self.model._wait( ++ 'machine', self.id, 'remove') ++ remove = destroy ++ ++ def run(self, command, timeout=None): ++ """Run command on this machine. ++ ++ :param str command: The command to run ++ :param int timeout: Time to wait before command is considered failed ++ ++ """ ++ raise NotImplementedError() ++ ++ async def set_annotations(self, annotations): ++ """Set annotations on this machine. ++ ++ :param annotations map[string]string: the annotations as key/value ++ pairs. ++ ++ """ ++ log.debug('Updating annotations on machine %s', self.id) ++ ++ self.ann_facade = client.AnnotationsFacade.from_connection( ++ self.connection) ++ ++ ann = client.EntityAnnotations( ++ entity=self.id, ++ annotations=annotations, ++ ) ++ return await self.ann_facade.Set([ann]) ++ ++ async def scp_to(self, source, destination, user='ubuntu', proxy=False, ++ scp_opts=''): ++ """Transfer files to this machine. ++ ++ :param str source: Local path of file(s) to transfer ++ :param str destination: Remote destination of transferred files ++ :param str user: Remote username ++ :param bool proxy: Proxy through the Juju API server ++ :param str scp_opts: Additional options to the `scp` command ++ """ ++ if proxy: ++ raise NotImplementedError('proxy option is not implemented') ++ ++ address = self.dns_name ++ destination = '%s@%s:%s' % (user, address, destination) ++ await self._scp(source, destination, scp_opts) ++ ++ async def scp_from(self, source, destination, user='ubuntu', proxy=False, ++ scp_opts=''): ++ """Transfer files from this machine. ++ ++ :param str source: Remote path of file(s) to transfer ++ :param str destination: Local destination of transferred files ++ :param str user: Remote username ++ :param bool proxy: Proxy through the Juju API server ++ :param str scp_opts: Additional options to the `scp` command ++ """ ++ if proxy: ++ raise NotImplementedError('proxy option is not implemented') ++ ++ address = self.dns_name ++ source = '%s@%s:%s' % (user, address, source) ++ await self._scp(source, destination, scp_opts) ++ ++ async def _scp(self, source, destination, scp_opts): ++ """ Execute an scp command. Requires a fully qualified source and ++ destination. ++ """ ++ cmd = [ ++ 'scp', ++ '-i', os.path.expanduser('~/.local/share/juju/ssh/juju_id_rsa'), ++ '-o', 'StrictHostKeyChecking=no', ++ source, destination ++ ] ++ cmd += scp_opts.split() ++ loop = self.model.loop ++ process = await asyncio.create_subprocess_exec(*cmd, loop=loop) ++ await process.wait() ++ if process.returncode != 0: ++ raise JujuError("command failed: %s" % cmd) ++ ++ def ssh( ++ self, command, user=None, proxy=False, ssh_opts=None): ++ """Execute a command over SSH on this machine. ++ ++ :param str command: Command to execute ++ :param str user: Remote username ++ :param bool proxy: Proxy through the Juju API server ++ :param str ssh_opts: Additional options to the `ssh` command ++ ++ """ ++ raise NotImplementedError() ++ ++ def status_history(self, num=20, utc=False): ++ """Get status history for this machine. ++ ++ :param int num: Size of history backlog ++ :param bool utc: Display time as UTC in RFC3339 format ++ ++ """ ++ raise NotImplementedError() ++ ++ @property ++ def agent_status(self): ++ """Returns the current Juju agent status string. ++ ++ """ ++ return self.safe_data['agent-status']['current'] ++ ++ @property ++ def agent_status_since(self): ++ """Get the time when the `agent_status` was last updated. ++ ++ """ ++ return parse_date(self.safe_data['agent-status']['since']) ++ ++ @property ++ def agent_version(self): ++ """Get the version of the Juju machine agent. ++ ++ May return None if the agent is not yet available. ++ """ ++ version = self.safe_data['agent-status']['version'] ++ if version: ++ return client.Number.from_json(version) ++ else: ++ return None ++ ++ @property ++ def status(self): ++ """Returns the current machine provisioning status string. ++ ++ """ ++ return self.safe_data['instance-status']['current'] ++ ++ @property ++ def status_message(self): ++ """Returns the current machine provisioning status message. ++ ++ """ ++ return self.safe_data['instance-status']['message'] ++ ++ @property ++ def status_since(self): ++ """Get the time when the `status` was last updated. ++ ++ """ ++ return parse_date(self.safe_data['instance-status']['since']) ++ ++ @property ++ def dns_name(self): ++ """Get the DNS name for this machine. This is a best guess based on the ++ addresses available in current data. ++ ++ May return None if no suitable address is found. ++ """ ++ for scope in ['public', 'local-cloud']: ++ addresses = self.safe_data['addresses'] or [] ++ addresses = [address for address in addresses ++ if address['scope'] == scope] ++ if addresses: ++ return addresses[0]['value'] ++ return None diff --cc modules/libjuju/juju/model.py index 0000000,0000000..bd8709a new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/model.py @@@ -1,0 -1,0 +1,2031 @@@ ++import asyncio ++import base64 ++import collections ++import hashlib ++import json ++import logging ++import os ++import re ++import stat ++import tempfile ++import weakref ++import zipfile ++from concurrent.futures import CancelledError ++from functools import partial ++from pathlib import Path ++ ++import websockets ++import yaml ++import theblues.charmstore ++import theblues.errors ++ ++from . import tag, utils ++from .client import client ++from .client import connection ++from .client.client import ConfigValue ++from .constraints import parse as parse_constraints, normalize_key ++from .delta import get_entity_delta ++from .delta import get_entity_class ++from .exceptions import DeadEntityException ++from .errors import JujuError, JujuAPIError ++from .placement import parse as parse_placement ++ ++log = logging.getLogger(__name__) ++ ++ ++class _Observer(object): ++ """Wrapper around an observer callable. ++ ++ This wrapper allows filter criteria to be associated with the ++ callable so that it's only called for changes that meet the criteria. ++ ++ """ ++ def __init__(self, callable_, entity_type, action, entity_id, predicate): ++ self.callable_ = callable_ ++ self.entity_type = entity_type ++ self.action = action ++ self.entity_id = entity_id ++ self.predicate = predicate ++ if self.entity_id: ++ self.entity_id = str(self.entity_id) ++ if not self.entity_id.startswith('^'): ++ self.entity_id = '^' + self.entity_id ++ if not self.entity_id.endswith('$'): ++ self.entity_id += '$' ++ ++ async def __call__(self, delta, old, new, model): ++ await self.callable_(delta, old, new, model) ++ ++ def cares_about(self, delta): ++ """Return True if this observer "cares about" (i.e. wants to be ++ called) for a this delta. ++ ++ """ ++ if (self.entity_id and delta.get_id() and ++ not re.match(self.entity_id, str(delta.get_id()))): ++ return False ++ ++ if self.entity_type and self.entity_type != delta.entity: ++ return False ++ ++ if self.action and self.action != delta.type: ++ return False ++ ++ if self.predicate and not self.predicate(delta): ++ return False ++ ++ return True ++ ++ ++class ModelObserver(object): ++ """ ++ Base class for creating observers that react to changes in a model. ++ """ ++ async def __call__(self, delta, old, new, model): ++ handler_name = 'on_{}_{}'.format(delta.entity, delta.type) ++ method = getattr(self, handler_name, self.on_change) ++ await method(delta, old, new, model) ++ ++ async def on_change(self, delta, old, new, model): ++ """Generic model-change handler. ++ ++ This should be overridden in a subclass. ++ ++ :param delta: :class:`juju.client.overrides.Delta` ++ :param old: :class:`juju.model.ModelEntity` ++ :param new: :class:`juju.model.ModelEntity` ++ :param model: :class:`juju.model.Model` ++ ++ """ ++ pass ++ ++ ++class ModelState(object): ++ """Holds the state of the model, including the delta history of all ++ entities in the model. ++ ++ """ ++ def __init__(self, model): ++ self.model = model ++ self.state = dict() ++ ++ def _live_entity_map(self, entity_type): ++ """Return an id:Entity map of all the living entities of ++ type ``entity_type``. ++ ++ """ ++ return { ++ entity_id: self.get_entity(entity_type, entity_id) ++ for entity_id, history in self.state.get(entity_type, {}).items() ++ if history[-1] is not None ++ } ++ ++ @property ++ def applications(self): ++ """Return a map of application-name:Application for all applications ++ currently in the model. ++ ++ """ ++ return self._live_entity_map('application') ++ ++ @property ++ def machines(self): ++ """Return a map of machine-id:Machine for all machines currently in ++ the model. ++ ++ """ ++ return self._live_entity_map('machine') ++ ++ @property ++ def units(self): ++ """Return a map of unit-id:Unit for all units currently in ++ the model. ++ ++ """ ++ return self._live_entity_map('unit') ++ ++ def entity_history(self, entity_type, entity_id): ++ """Return the history deque for an entity. ++ ++ """ ++ return self.state[entity_type][entity_id] ++ ++ def entity_data(self, entity_type, entity_id, history_index): ++ """Return the data dict for an entity at a specific index of its ++ history. ++ ++ """ ++ return self.entity_history(entity_type, entity_id)[history_index] ++ ++ def apply_delta(self, delta): ++ """Apply delta to our state and return a copy of the ++ affected object as it was before and after the update, e.g.: ++ ++ old_obj, new_obj = self.apply_delta(delta) ++ ++ old_obj may be None if the delta is for the creation of a new object, ++ e.g. a new application or unit is deployed. ++ ++ new_obj will never be None, but may be dead (new_obj.dead == True) ++ if the object was deleted as a result of the delta being applied. ++ ++ """ ++ history = ( ++ self.state ++ .setdefault(delta.entity, {}) ++ .setdefault(delta.get_id(), collections.deque()) ++ ) ++ ++ history.append(delta.data) ++ if delta.type == 'remove': ++ history.append(None) ++ ++ entity = self.get_entity(delta.entity, delta.get_id()) ++ return entity.previous(), entity ++ ++ def get_entity( ++ self, entity_type, entity_id, history_index=-1, connected=True): ++ """Return an object instance for the given entity_type and id. ++ ++ By default the object state matches the most recent state from ++ Juju. To get an instance of the object in an older state, pass ++ history_index, an index into the history deque for the entity. ++ ++ """ ++ ++ if history_index < 0 and history_index != -1: ++ history_index += len(self.entity_history(entity_type, entity_id)) ++ if history_index < 0: ++ return None ++ ++ try: ++ self.entity_data(entity_type, entity_id, history_index) ++ except IndexError: ++ return None ++ ++ entity_class = get_entity_class(entity_type) ++ return entity_class( ++ entity_id, self.model, history_index=history_index, ++ connected=connected) ++ ++ ++class ModelEntity(object): ++ """An object in the Model tree""" ++ ++ def __init__(self, entity_id, model, history_index=-1, connected=True): ++ """Initialize a new entity ++ ++ :param entity_id str: The unique id of the object in the model ++ :param model: The model instance in whose object tree this ++ entity resides ++ :history_index int: The index of this object's state in the model's ++ history deque for this entity ++ :connected bool: Flag indicating whether this object gets live updates ++ from the model. ++ ++ """ ++ self.entity_id = entity_id ++ self.model = model ++ self._history_index = history_index ++ self.connected = connected ++ self.connection = model.connection ++ ++ def __repr__(self): ++ return '<{} entity_id="{}">'.format(type(self).__name__, ++ self.entity_id) ++ ++ def __getattr__(self, name): ++ """Fetch object attributes from the underlying data dict held in the ++ model. ++ ++ """ ++ try: ++ return self.safe_data[name] ++ except KeyError: ++ name = name.replace('_', '-') ++ if name in self.safe_data: ++ return self.safe_data[name] ++ else: ++ raise ++ ++ def __bool__(self): ++ return bool(self.data) ++ ++ def on_change(self, callable_): ++ """Add a change observer to this entity. ++ ++ """ ++ self.model.add_observer( ++ callable_, self.entity_type, 'change', self.entity_id) ++ ++ def on_remove(self, callable_): ++ """Add a remove observer to this entity. ++ ++ """ ++ self.model.add_observer( ++ callable_, self.entity_type, 'remove', self.entity_id) ++ ++ @property ++ def entity_type(self): ++ """A string identifying the entity type of this object, e.g. ++ 'application' or 'unit', etc. ++ ++ """ ++ return self.__class__.__name__.lower() ++ ++ @property ++ def current(self): ++ """Return True if this object represents the current state of the ++ entity in the underlying model. ++ ++ This will be True except when the object represents an entity at a ++ non-latest state in history, e.g. if the object was obtained by calling ++ .previous() on another object. ++ ++ """ ++ return self._history_index == -1 ++ ++ @property ++ def dead(self): ++ """Returns True if this entity no longer exists in the underlying ++ model. ++ ++ """ ++ return ( ++ self.data is None or ++ self.model.state.entity_data( ++ self.entity_type, self.entity_id, -1) is None ++ ) ++ ++ @property ++ def alive(self): ++ """Returns True if this entity still exists in the underlying ++ model. ++ ++ """ ++ return not self.dead ++ ++ @property ++ def data(self): ++ """The data dictionary for this entity. ++ ++ """ ++ return self.model.state.entity_data( ++ self.entity_type, self.entity_id, self._history_index) ++ ++ @property ++ def safe_data(self): ++ """The data dictionary for this entity. ++ ++ If this `ModelEntity` points to the dead state, it will ++ raise `DeadEntityException`. ++ ++ """ ++ if self.data is None: ++ raise DeadEntityException( ++ "Entity {}:{} is dead - its attributes can no longer be " ++ "accessed. Use the .previous() method on this object to get " ++ "a copy of the object at its previous state.".format( ++ self.entity_type, self.entity_id)) ++ return self.data ++ ++ def previous(self): ++ """Return a copy of this object as was at its previous state in ++ history. ++ ++ Returns None if this object is new (and therefore has no history). ++ ++ The returned object is always "disconnected", i.e. does not receive ++ live updates. ++ ++ """ ++ return self.model.state.get_entity( ++ self.entity_type, self.entity_id, self._history_index - 1, ++ connected=False) ++ ++ def next(self): ++ """Return a copy of this object at its next state in ++ history. ++ ++ Returns None if this object is already the latest. ++ ++ The returned object is "disconnected", i.e. does not receive ++ live updates, unless it is current (latest). ++ ++ """ ++ if self._history_index == -1: ++ return None ++ ++ new_index = self._history_index + 1 ++ connected = ( ++ new_index == len(self.model.state.entity_history( ++ self.entity_type, self.entity_id)) - 1 ++ ) ++ return self.model.state.get_entity( ++ self.entity_type, self.entity_id, self._history_index - 1, ++ connected=connected) ++ ++ def latest(self): ++ """Return a copy of this object at its current state in the model. ++ ++ Returns self if this object is already the latest. ++ ++ The returned object is always "connected", i.e. receives ++ live updates from the model. ++ ++ """ ++ if self._history_index == -1: ++ return self ++ ++ return self.model.state.get_entity(self.entity_type, self.entity_id) ++ ++ ++class Model(object): ++ """ ++ The main API for interacting with a Juju model. ++ """ ++ def __init__(self, loop=None, ++ max_frame_size=connection.Connection.DEFAULT_FRAME_SIZE): ++ """Instantiate a new connected Model. ++ ++ :param loop: an asyncio event loop ++ :param max_frame_size: See ++ `juju.client.connection.Connection.MAX_FRAME_SIZE` ++ ++ """ ++ self.loop = loop or asyncio.get_event_loop() ++ self.max_frame_size = max_frame_size ++ self.connection = None ++ self.observers = weakref.WeakValueDictionary() ++ self.state = ModelState(self) ++ self.info = None ++ self._watch_stopping = asyncio.Event(loop=self.loop) ++ self._watch_stopped = asyncio.Event(loop=self.loop) ++ self._watch_received = asyncio.Event(loop=self.loop) ++ self._charmstore = CharmStore(self.loop) ++ ++ async def __aenter__(self): ++ await self.connect_current() ++ return self ++ ++ async def __aexit__(self, exc_type, exc, tb): ++ await self.disconnect() ++ ++ if exc_type is not None: ++ return False ++ ++ async def connect(self, *args, **kw): ++ """Connect to an arbitrary Juju model. ++ ++ args and kw are passed through to Connection.connect() ++ ++ """ ++ if 'loop' not in kw: ++ kw['loop'] = self.loop ++ if 'max_frame_size' not in kw: ++ kw['max_frame_size'] = self.max_frame_size ++ self.connection = await connection.Connection.connect(*args, **kw) ++ await self._after_connect() ++ ++ async def connect_current(self): ++ """Connect to the current Juju model. ++ ++ """ ++ self.connection = await connection.Connection.connect_current( ++ self.loop, max_frame_size=self.max_frame_size) ++ await self._after_connect() ++ ++ async def connect_model(self, model_name): ++ """Connect to a specific Juju model by name. ++ ++ :param model_name: Format [controller:][user/]model ++ ++ """ ++ self.connection = await connection.Connection.connect_model( ++ model_name, self.loop, self.max_frame_size) ++ await self._after_connect() ++ ++ async def _after_connect(self): ++ """Run initialization steps after connecting to websocket. ++ ++ """ ++ self._watch() ++ await self._watch_received.wait() ++ await self.get_info() ++ ++ async def disconnect(self): ++ """Shut down the watcher task and close websockets. ++ ++ """ ++ if self.connection and self.connection.is_open: ++ log.debug('Stopping watcher task') ++ self._watch_stopping.set() ++ await self._watch_stopped.wait() ++ log.debug('Closing model connection') ++ await self.connection.close() ++ self.connection = None ++ ++ async def add_local_charm_dir(self, charm_dir, series): ++ """Upload a local charm to the model. ++ ++ This will automatically generate an archive from ++ the charm dir. ++ ++ :param charm_dir: Path to the charm directory ++ :param series: Charm series ++ ++ """ ++ fh = tempfile.NamedTemporaryFile() ++ CharmArchiveGenerator(charm_dir).make_archive(fh.name) ++ with fh: ++ func = partial( ++ self.add_local_charm, fh, series, os.stat(fh.name).st_size) ++ charm_url = await self.loop.run_in_executor(None, func) ++ ++ log.debug('Uploaded local charm: %s -> %s', charm_dir, charm_url) ++ return charm_url ++ ++ def add_local_charm(self, charm_file, series, size=None): ++ """Upload a local charm archive to the model. ++ ++ Returns the 'local:...' url that should be used to deploy the charm. ++ ++ :param charm_file: Path to charm zip archive ++ :param series: Charm series ++ :param size: Size of the archive, in bytes ++ :return str: 'local:...' url for deploying the charm ++ :raises: :class:`JujuError` if the upload fails ++ ++ Uses an https endpoint at the same host:port as the wss. ++ Supports large file uploads. ++ ++ .. warning:: ++ ++ This method will block. Consider using :meth:`add_local_charm_dir` ++ instead. ++ ++ """ ++ conn, headers, path_prefix = self.connection.https_connection() ++ path = "%s/charms?series=%s" % (path_prefix, series) ++ headers['Content-Type'] = 'application/zip' ++ if size: ++ headers['Content-Length'] = size ++ conn.request("POST", path, charm_file, headers) ++ response = conn.getresponse() ++ result = response.read().decode() ++ if not response.status == 200: ++ raise JujuError(result) ++ result = json.loads(result) ++ return result['charm-url'] ++ ++ def all_units_idle(self): ++ """Return True if all units are idle. ++ ++ """ ++ for unit in self.units.values(): ++ unit_status = unit.data['agent-status']['current'] ++ if unit_status != 'idle': ++ return False ++ return True ++ ++ async def reset(self, force=False): ++ """Reset the model to a clean state. ++ ++ :param bool force: Force-terminate machines. ++ ++ This returns only after the model has reached a clean state. "Clean" ++ means no applications or machines exist in the model. ++ ++ """ ++ log.debug('Resetting model') ++ for app in self.applications.values(): ++ await app.destroy() ++ for machine in self.machines.values(): ++ await machine.destroy(force=force) ++ await self.block_until( ++ lambda: len(self.machines) == 0 ++ ) ++ ++ async def block_until(self, *conditions, timeout=None, wait_period=0.5): ++ """Return only after all conditions are true. ++ ++ """ ++ async def _block(): ++ while not all(c() for c in conditions): ++ if not (self.connection and self.connection.is_open): ++ raise websockets.ConnectionClosed(1006, 'no reason') ++ await asyncio.sleep(wait_period, loop=self.loop) ++ await asyncio.wait_for(_block(), timeout, loop=self.loop) ++ ++ @property ++ def applications(self): ++ """Return a map of application-name:Application for all applications ++ currently in the model. ++ ++ """ ++ return self.state.applications ++ ++ @property ++ def machines(self): ++ """Return a map of machine-id:Machine for all machines currently in ++ the model. ++ ++ """ ++ return self.state.machines ++ ++ @property ++ def units(self): ++ """Return a map of unit-id:Unit for all units currently in ++ the model. ++ ++ """ ++ return self.state.units ++ ++ async def get_info(self): ++ """Return a client.ModelInfo object for this Model. ++ ++ Retrieves latest info for this Model from the api server. The ++ return value is cached on the Model.info attribute so that the ++ valued may be accessed again without another api call, if ++ desired. ++ ++ This method is called automatically when the Model is connected, ++ resulting in Model.info being initialized without requiring an ++ explicit call to this method. ++ ++ """ ++ facade = client.ClientFacade.from_connection(self.connection) ++ ++ self.info = await facade.ModelInfo() ++ log.debug('Got ModelInfo: %s', vars(self.info)) ++ ++ return self.info ++ ++ def add_observer( ++ self, callable_, entity_type=None, action=None, entity_id=None, ++ predicate=None): ++ """Register an "on-model-change" callback ++ ++ Once the model is connected, ``callable_`` ++ will be called each time the model changes. ``callable_`` should ++ be Awaitable and accept the following positional arguments: ++ ++ delta - An instance of :class:`juju.delta.EntityDelta` ++ containing the raw delta data recv'd from the Juju ++ websocket. ++ ++ old_obj - If the delta modifies an existing object in the model, ++ old_obj will be a copy of that object, as it was before the ++ delta was applied. Will be None if the delta creates a new ++ entity in the model. ++ ++ new_obj - A copy of the new or updated object, after the delta ++ is applied. Will be None if the delta removes an entity ++ from the model. ++ ++ model - The :class:`Model` itself. ++ ++ Events for which ``callable_`` is called can be specified by passing ++ entity_type, action, and/or entitiy_id filter criteria, e.g.:: ++ ++ add_observer( ++ myfunc, ++ entity_type='application', action='add', entity_id='ubuntu') ++ ++ For more complex filtering conditions, pass a predicate function. It ++ will be called with a delta as its only argument. If the predicate ++ function returns True, the ``callable_`` will be called. ++ ++ """ ++ observer = _Observer( ++ callable_, entity_type, action, entity_id, predicate) ++ self.observers[observer] = callable_ ++ ++ def _watch(self): ++ """Start an asynchronous watch against this model. ++ ++ See :meth:`add_observer` to register an onchange callback. ++ ++ """ ++ async def _all_watcher(): ++ try: ++ allwatcher = client.AllWatcherFacade.from_connection( ++ self.connection) ++ while not self._watch_stopping.is_set(): ++ try: ++ results = await utils.run_with_interrupt( ++ allwatcher.Next(), ++ self._watch_stopping, ++ self.loop) ++ except JujuAPIError as e: ++ if 'watcher was stopped' not in str(e): ++ raise ++ if self._watch_stopping.is_set(): ++ # this shouldn't ever actually happen, because ++ # the event should trigger before the controller ++ # has a chance to tell us the watcher is stopped ++ # but handle it gracefully, just in case ++ break ++ # controller stopped our watcher for some reason ++ # but we're not actually stopping, so just restart it ++ log.warning( ++ 'Watcher: watcher stopped, restarting') ++ del allwatcher.Id ++ continue ++ except websockets.ConnectionClosed: ++ monitor = self.connection.monitor ++ if monitor.status == monitor.ERROR: ++ # closed unexpectedly, try to reopen ++ log.warning( ++ 'Watcher: connection closed, reopening') ++ await self.connection.reconnect() ++ del allwatcher.Id ++ continue ++ else: ++ # closed on request, go ahead and shutdown ++ break ++ if self._watch_stopping.is_set(): ++ await allwatcher.Stop() ++ break ++ for delta in results.deltas: ++ delta = get_entity_delta(delta) ++ old_obj, new_obj = self.state.apply_delta(delta) ++ await self._notify_observers(delta, old_obj, new_obj) ++ self._watch_received.set() ++ except CancelledError: ++ pass ++ except Exception: ++ log.exception('Error in watcher') ++ raise ++ finally: ++ self._watch_stopped.set() ++ ++ log.debug('Starting watcher task') ++ self._watch_received.clear() ++ self._watch_stopping.clear() ++ self._watch_stopped.clear() ++ self.loop.create_task(_all_watcher()) ++ ++ async def _notify_observers(self, delta, old_obj, new_obj): ++ """Call observing callbacks, notifying them of a change in model state ++ ++ :param delta: The raw change from the watcher ++ (:class:`juju.client.overrides.Delta`) ++ :param old_obj: The object in the model that this delta updates. ++ May be None. ++ :param new_obj: The object in the model that is created or updated ++ by applying this delta. ++ ++ """ ++ if new_obj and not old_obj: ++ delta.type = 'add' ++ ++ log.debug( ++ 'Model changed: %s %s %s', ++ delta.entity, delta.type, delta.get_id()) ++ ++ for o in self.observers: ++ if o.cares_about(delta): ++ asyncio.ensure_future(o(delta, old_obj, new_obj, self), ++ loop=self.loop) ++ ++ async def _wait(self, entity_type, entity_id, action, predicate=None): ++ """ ++ Block the calling routine until a given action has happened to the ++ given entity ++ ++ :param entity_type: The entity's type. ++ :param entity_id: The entity's id. ++ :param action: the type of action (e.g., 'add', 'change', or 'remove') ++ :param predicate: optional callable that must take as an ++ argument a delta, and must return a boolean, indicating ++ whether the delta contains the specific action we're looking ++ for. For example, you might check to see whether a 'change' ++ has a 'completed' status. See the _Observer class for details. ++ ++ """ ++ q = asyncio.Queue(loop=self.loop) ++ ++ async def callback(delta, old, new, model): ++ await q.put(delta.get_id()) ++ ++ self.add_observer(callback, entity_type, action, entity_id, predicate) ++ entity_id = await q.get() ++ # object might not be in the entity_map if we were waiting for a ++ # 'remove' action ++ return self.state._live_entity_map(entity_type).get(entity_id) ++ ++ async def _wait_for_new(self, entity_type, entity_id=None, predicate=None): ++ """Wait for a new object to appear in the Model and return it. ++ ++ Waits for an object of type ``entity_type`` with id ``entity_id``. ++ If ``entity_id`` is ``None``, it will wait for the first new entity ++ of the correct type. ++ ++ This coroutine blocks until the new object appears in the model. ++ ++ """ ++ # if the entity is already in the model, just return it ++ if entity_id in self.state._live_entity_map(entity_type): ++ return self.state._live_entity_map(entity_type)[entity_id] ++ # if we know the entity_id, we can trigger on any action that puts ++ # the enitty into the model; otherwise, we have to watch for the ++ # next "add" action on that entity_type ++ action = 'add' if entity_id is None else None ++ return await self._wait(entity_type, entity_id, action, predicate) ++ ++ async def wait_for_action(self, action_id): ++ """Given an action, wait for it to complete.""" ++ ++ if action_id.startswith("action-"): ++ # if we've been passed action.tag, transform it into the ++ # id that the api deltas will use. ++ action_id = action_id[7:] ++ ++ def predicate(delta): ++ return delta.data['status'] in ('completed', 'failed') ++ ++ return await self._wait('action', action_id, 'change', predicate) ++ ++ async def add_machine( ++ self, spec=None, constraints=None, disks=None, series=None): ++ """Start a new, empty machine and optionally a container, or add a ++ container to a machine. ++ ++ :param str spec: Machine specification ++ Examples:: ++ ++ (None) - starts a new machine ++ 'lxd' - starts a new machine with one lxd container ++ 'lxd:4' - starts a new lxd container on machine 4 ++ 'ssh:user@10.10.0.3' - manually provisions a machine with ssh ++ 'zone=us-east-1a' - starts a machine in zone us-east-1s on AWS ++ 'maas2.name' - acquire machine maas2.name on MAAS ++ ++ :param dict constraints: Machine constraints, which can contain the ++ the following keys:: ++ ++ arch : str ++ container : str ++ cores : int ++ cpu_power : int ++ instance_type : str ++ mem : int ++ root_disk : int ++ spaces : list(str) ++ tags : list(str) ++ virt_type : str ++ ++ Example:: ++ ++ constraints={ ++ 'mem': 256 * MB, ++ 'tags': ['virtual'], ++ } ++ ++ :param list disks: List of disk constraint dictionaries, which can ++ contain the following keys:: ++ ++ count : int ++ pool : str ++ size : int ++ ++ Example:: ++ ++ disks=[{ ++ 'pool': 'rootfs', ++ 'size': 10 * GB, ++ 'count': 1, ++ }] ++ ++ :param str series: Series, e.g. 'xenial' ++ ++ Supported container types are: lxd, kvm ++ ++ When deploying a container to an existing machine, constraints cannot ++ be used. ++ ++ """ ++ params = client.AddMachineParams() ++ params.jobs = ['JobHostUnits'] ++ ++ if spec: ++ placement = parse_placement(spec) ++ if placement: ++ params.placement = placement[0] ++ ++ if constraints: ++ params.constraints = client.Value.from_json(constraints) ++ ++ if disks: ++ params.disks = [ ++ client.Constraints.from_json(o) for o in disks] ++ ++ if series: ++ params.series = series ++ ++ # Submit the request. ++ client_facade = client.ClientFacade.from_connection(self.connection) ++ results = await client_facade.AddMachines([params]) ++ error = results.machines[0].error ++ if error: ++ raise ValueError("Error adding machine: %s" % error.message) ++ machine_id = results.machines[0].machine ++ log.debug('Added new machine %s', machine_id) ++ return await self._wait_for_new('machine', machine_id) ++ ++ async def add_relation(self, relation1, relation2): ++ """Add a relation between two applications. ++ ++ :param str relation1: '[:]' ++ :param str relation2: '[:]' ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Adding relation %s <-> %s', relation1, relation2) ++ ++ try: ++ result = await app_facade.AddRelation([relation1, relation2]) ++ except JujuAPIError as e: ++ if 'relation already exists' not in e.message: ++ raise ++ log.debug( ++ 'Relation %s <-> %s already exists', relation1, relation2) ++ # TODO: if relation already exists we should return the ++ # Relation ModelEntity here ++ return None ++ ++ def predicate(delta): ++ endpoints = {} ++ for endpoint in delta.data['endpoints']: ++ endpoints[endpoint['application-name']] = endpoint['relation'] ++ return endpoints == result.endpoints ++ ++ return await self._wait_for_new('relation', None, predicate) ++ ++ def add_space(self, name, *cidrs): ++ """Add a new network space. ++ ++ Adds a new space with the given name and associates the given ++ (optional) list of existing subnet CIDRs with it. ++ ++ :param str name: Name of the space ++ :param \*cidrs: Optional list of existing subnet CIDRs ++ ++ """ ++ raise NotImplementedError() ++ ++ async def add_ssh_key(self, user, key): ++ """Add a public SSH key to this model. ++ ++ :param str user: The username of the user ++ :param str key: The public ssh key ++ ++ """ ++ key_facade = client.KeyManagerFacade.from_connection(self.connection) ++ return await key_facade.AddKeys([key], user) ++ add_ssh_keys = add_ssh_key ++ ++ def add_subnet(self, cidr_or_id, space, *zones): ++ """Add an existing subnet to this model. ++ ++ :param str cidr_or_id: CIDR or provider ID of the existing subnet ++ :param str space: Network space with which to associate ++ :param str \*zones: Zone(s) in which the subnet resides ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_backups(self): ++ """Retrieve metadata for backups in this model. ++ ++ """ ++ raise NotImplementedError() ++ ++ def block(self, *commands): ++ """Add a new block to this model. ++ ++ :param str \*commands: The commands to block. Valid values are ++ 'all-changes', 'destroy-model', 'remove-object' ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_blocks(self): ++ """List blocks for this model. ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_cached_images(self, arch=None, kind=None, series=None): ++ """Return a list of cached OS images. ++ ++ :param str arch: Filter by image architecture ++ :param str kind: Filter by image kind, e.g. 'lxd' ++ :param str series: Filter by image series, e.g. 'xenial' ++ ++ """ ++ raise NotImplementedError() ++ ++ def create_backup(self, note=None, no_download=False): ++ """Create a backup of this model. ++ ++ :param str note: A note to store with the backup ++ :param bool no_download: Do not download the backup archive ++ :return str: Path to downloaded archive ++ ++ """ ++ raise NotImplementedError() ++ ++ def create_storage_pool(self, name, provider_type, **pool_config): ++ """Create or define a storage pool. ++ ++ :param str name: Name to give the storage pool ++ :param str provider_type: Pool provider type ++ :param \*\*pool_config: key/value pool configuration pairs ++ ++ """ ++ raise NotImplementedError() ++ ++ def debug_log( ++ self, no_tail=False, exclude_module=None, include_module=None, ++ include=None, level=None, limit=0, lines=10, replay=False, ++ exclude=None): ++ """Get log messages for this model. ++ ++ :param bool no_tail: Stop after returning existing log messages ++ :param list exclude_module: Do not show log messages for these logging ++ modules ++ :param list include_module: Only show log messages for these logging ++ modules ++ :param list include: Only show log messages for these entities ++ :param str level: Log level to show, valid options are 'TRACE', ++ 'DEBUG', 'INFO', 'WARNING', 'ERROR, ++ :param int limit: Return this many of the most recent (possibly ++ filtered) lines are shown ++ :param int lines: Yield this many of the most recent lines, and keep ++ yielding ++ :param bool replay: Yield the entire log, and keep yielding ++ :param list exclude: Do not show log messages for these entities ++ ++ """ ++ raise NotImplementedError() ++ ++ def _get_series(self, entity_url, entity): ++ # try to get the series from the provided charm URL ++ if entity_url.startswith('cs:'): ++ parts = entity_url[3:].split('/') ++ else: ++ parts = entity_url.split('/') ++ if parts[0].startswith('~'): ++ parts.pop(0) ++ if len(parts) > 1: ++ # series was specified in the URL ++ return parts[0] ++ # series was not supplied at all, so use the newest ++ # supported series according to the charm store ++ ss = entity['Meta']['supported-series'] ++ return ss['SupportedSeries'][0] ++ ++ async def deploy( ++ self, entity_url, application_name=None, bind=None, budget=None, ++ channel=None, config=None, constraints=None, force=False, ++ num_units=1, plan=None, resources=None, series=None, storage=None, ++ to=None): ++ """Deploy a new service or bundle. ++ ++ :param str entity_url: Charm or bundle url ++ :param str application_name: Name to give the service ++ :param dict bind: : pairs ++ :param dict budget: : pairs ++ :param str channel: Charm store channel from which to retrieve ++ the charm or bundle, e.g. 'edge' ++ :param dict config: Charm configuration dictionary ++ :param constraints: Service constraints ++ :type constraints: :class:`juju.Constraints` ++ :param bool force: Allow charm to be deployed to a machine running ++ an unsupported series ++ :param int num_units: Number of units to deploy ++ :param str plan: Plan under which to deploy charm ++ :param dict resources: : pairs ++ :param str series: Series on which to deploy ++ :param dict storage: Storage constraints TODO how do these look? ++ :param to: Placement directive as a string. For example: ++ ++ '23' - place on machine 23 ++ 'lxd:7' - place in new lxd container on machine 7 ++ '24/lxd/3' - place in container 3 on machine 24 ++ ++ If None, a new machine is provisioned. ++ ++ ++ TODO:: ++ ++ - support local resources ++ ++ """ ++ if storage: ++ storage = { ++ k: client.Constraints(**v) ++ for k, v in storage.items() ++ } ++ ++ is_local = ( ++ entity_url.startswith('local:') or ++ os.path.isdir(entity_url) ++ ) ++ if is_local: ++ entity_id = entity_url.replace('local:', '') ++ else: ++ entity = await self.charmstore.entity(entity_url, channel=channel) ++ entity_id = entity['Id'] ++ ++ client_facade = client.ClientFacade.from_connection(self.connection) ++ ++ is_bundle = ((is_local and ++ (Path(entity_id) / 'bundle.yaml').exists()) or ++ (not is_local and 'bundle/' in entity_id)) ++ ++ if is_bundle: ++ handler = BundleHandler(self) ++ await handler.fetch_plan(entity_id) ++ await handler.execute_plan() ++ extant_apps = {app for app in self.applications} ++ pending_apps = set(handler.applications) - extant_apps ++ if pending_apps: ++ # new apps will usually be in the model by now, but if some ++ # haven't made it yet we'll need to wait on them to be added ++ await asyncio.gather(*[ ++ asyncio.ensure_future( ++ self._wait_for_new('application', app_name), ++ loop=self.loop) ++ for app_name in pending_apps ++ ], loop=self.loop) ++ return [app for name, app in self.applications.items() ++ if name in handler.applications] ++ else: ++ if not is_local: ++ if not application_name: ++ application_name = entity['Meta']['charm-metadata']['Name'] ++ if not series: ++ series = self._get_series(entity_url, entity) ++ await client_facade.AddCharm(channel, entity_id) ++ # XXX: we're dropping local resources here, but we don't ++ # actually support them yet anyway ++ resources = await self._add_store_resources(application_name, ++ entity_id, ++ entity) ++ else: ++ # We have a local charm dir that needs to be uploaded ++ charm_dir = os.path.abspath( ++ os.path.expanduser(entity_id)) ++ series = series or get_charm_series(charm_dir) ++ if not series: ++ raise JujuError( ++ "Couldn't determine series for charm at {}. " ++ "Pass a 'series' kwarg to Model.deploy().".format( ++ charm_dir)) ++ entity_id = await self.add_local_charm_dir(charm_dir, series) ++ return await self._deploy( ++ charm_url=entity_id, ++ application=application_name, ++ series=series, ++ config=config or {}, ++ constraints=constraints, ++ endpoint_bindings=bind, ++ resources=resources, ++ storage=storage, ++ channel=channel, ++ num_units=num_units, ++ placement=parse_placement(to) ++ ) ++ ++ async def _add_store_resources(self, application, entity_url, entity=None): ++ if not entity: ++ # avoid extra charm store call if one was already made ++ entity = await self.charmstore.entity(entity_url) ++ resources = [ ++ { ++ 'description': resource['Description'], ++ 'fingerprint': resource['Fingerprint'], ++ 'name': resource['Name'], ++ 'path': resource['Path'], ++ 'revision': resource['Revision'], ++ 'size': resource['Size'], ++ 'type_': resource['Type'], ++ 'origin': 'store', ++ } for resource in entity['Meta']['resources'] ++ ] ++ ++ if not resources: ++ return None ++ ++ resources_facade = client.ResourcesFacade.from_connection( ++ self.connection) ++ response = await resources_facade.AddPendingResources( ++ tag.application(application), ++ entity_url, ++ [client.CharmResource(**resource) for resource in resources]) ++ resource_map = {resource['name']: pid ++ for resource, pid ++ in zip(resources, response.pending_ids)} ++ return resource_map ++ ++ async def _deploy(self, charm_url, application, series, config, ++ constraints, endpoint_bindings, resources, storage, ++ channel=None, num_units=None, placement=None): ++ """Logic shared between `Model.deploy` and `BundleHandler.deploy`. ++ """ ++ log.info('Deploying %s', charm_url) ++ ++ # stringify all config values for API, and convert to YAML ++ config = {k: str(v) for k, v in config.items()} ++ config = yaml.dump({application: config}, ++ default_flow_style=False) ++ ++ app_facade = client.ApplicationFacade.from_connection( ++ self.connection) ++ ++ app = client.ApplicationDeploy( ++ charm_url=charm_url, ++ application=application, ++ series=series, ++ channel=channel, ++ config_yaml=config, ++ constraints=parse_constraints(constraints), ++ endpoint_bindings=endpoint_bindings, ++ num_units=num_units, ++ resources=resources, ++ storage=storage, ++ placement=placement ++ ) ++ ++ result = await app_facade.Deploy([app]) ++ errors = [r.error.message for r in result.results if r.error] ++ if errors: ++ raise JujuError('\n'.join(errors)) ++ return await self._wait_for_new('application', application) ++ ++ async def destroy(self): ++ """Terminate all machines and resources for this model. ++ Is already implemented in controller.py. ++ """ ++ raise NotImplementedError() ++ ++ async def destroy_unit(self, *unit_names): ++ """Destroy units by name. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Destroying unit%s %s', ++ 's' if len(unit_names) == 1 else '', ++ ' '.join(unit_names)) ++ ++ return await app_facade.DestroyUnits(list(unit_names)) ++ destroy_units = destroy_unit ++ ++ def get_backup(self, archive_id): ++ """Download a backup archive file. ++ ++ :param str archive_id: The id of the archive to download ++ :return str: Path to the archive file ++ ++ """ ++ raise NotImplementedError() ++ ++ def enable_ha( ++ self, num_controllers=0, constraints=None, series=None, to=None): ++ """Ensure sufficient controllers exist to provide redundancy. ++ ++ :param int num_controllers: Number of controllers to make available ++ :param constraints: Constraints to apply to the controller machines ++ :type constraints: :class:`juju.Constraints` ++ :param str series: Series of the controller machines ++ :param list to: Placement directives for controller machines, e.g.:: ++ ++ '23' - machine 23 ++ 'lxc:7' - new lxc container on machine 7 ++ '24/lxc/3' - lxc container 3 or machine 24 ++ ++ If None, a new machine is provisioned. ++ ++ """ ++ raise NotImplementedError() ++ ++ async def get_config(self): ++ """Return the configuration settings for this model. ++ ++ :returns: A ``dict`` mapping keys to `ConfigValue` instances, ++ which have `source` and `value` attributes. ++ """ ++ config_facade = client.ModelConfigFacade.from_connection( ++ self.connection ++ ) ++ result = await config_facade.ModelGet() ++ config = result.config ++ for key, value in config.items(): ++ config[key] = ConfigValue.from_json(value) ++ return config ++ ++ def get_constraints(self): ++ """Return the machine constraints for this model. ++ ++ """ ++ raise NotImplementedError() ++ ++ async def grant(self, username, acl='read'): ++ """Grant a user access to this model. ++ ++ :param str username: Username ++ :param str acl: Access control ('read' or 'write') ++ ++ """ ++ controller_conn = await self.connection.controller() ++ model_facade = client.ModelManagerFacade.from_connection( ++ controller_conn) ++ user = tag.user(username) ++ model = tag.model(self.info.uuid) ++ changes = client.ModifyModelAccess(acl, 'grant', model, user) ++ await self.revoke(username) ++ return await model_facade.ModifyModelAccess([changes]) ++ ++ def import_ssh_key(self, identity): ++ """Add a public SSH key from a trusted indentity source to this model. ++ ++ :param str identity: User identity in the form : ++ ++ """ ++ raise NotImplementedError() ++ import_ssh_keys = import_ssh_key ++ ++ async def get_machines(self): ++ """Return list of machines in this model. ++ ++ """ ++ return list(self.state.machines.keys()) ++ ++ def get_shares(self): ++ """Return list of all users with access to this model. ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_spaces(self): ++ """Return list of all known spaces, including associated subnets. ++ ++ """ ++ raise NotImplementedError() ++ ++ async def get_ssh_key(self, raw_ssh=False): ++ """Return known SSH keys for this model. ++ :param bool raw_ssh: if True, returns the raw ssh key, ++ else it's fingerprint ++ ++ """ ++ key_facade = client.KeyManagerFacade.from_connection(self.connection) ++ entity = {'tag': tag.model(self.info.uuid)} ++ entities = client.Entities([entity]) ++ return await key_facade.ListKeys(entities, raw_ssh) ++ get_ssh_keys = get_ssh_key ++ ++ def get_storage(self, filesystem=False, volume=False): ++ """Return details of storage instances. ++ ++ :param bool filesystem: Include filesystem storage ++ :param bool volume: Include volume storage ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_storage_pools(self, names=None, providers=None): ++ """Return list of storage pools. ++ ++ :param list names: Only include pools with these names ++ :param list providers: Only include pools for these providers ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_subnets(self, space=None, zone=None): ++ """Return list of known subnets. ++ ++ :param str space: Only include subnets in this space ++ :param str zone: Only include subnets in this zone ++ ++ """ ++ raise NotImplementedError() ++ ++ def remove_blocks(self): ++ """Remove all blocks from this model. ++ ++ """ ++ raise NotImplementedError() ++ ++ def remove_backup(self, backup_id): ++ """Delete a backup. ++ ++ :param str backup_id: The id of the backup to remove ++ ++ """ ++ raise NotImplementedError() ++ ++ def remove_cached_images(self, arch=None, kind=None, series=None): ++ """Remove cached OS images. ++ ++ :param str arch: Architecture of the images to remove ++ :param str kind: Image kind to remove, e.g. 'lxd' ++ :param str series: Image series to remove, e.g. 'xenial' ++ ++ """ ++ raise NotImplementedError() ++ ++ def remove_machine(self, *machine_ids): ++ """Remove a machine from this model. ++ ++ :param str \*machine_ids: Ids of the machines to remove ++ ++ """ ++ raise NotImplementedError() ++ remove_machines = remove_machine ++ ++ async def remove_ssh_key(self, user, key): ++ """Remove a public SSH key(s) from this model. ++ ++ :param str key: Full ssh key ++ :param str user: Juju user to which the key is registered ++ ++ """ ++ key_facade = client.KeyManagerFacade.from_connection(self.connection) ++ key = base64.b64decode(bytes(key.strip().split()[1].encode('ascii'))) ++ key = hashlib.md5(key).hexdigest() ++ key = ':'.join(a+b for a, b in zip(key[::2], key[1::2])) ++ await key_facade.DeleteKeys([key], user) ++ remove_ssh_keys = remove_ssh_key ++ ++ def restore_backup( ++ self, bootstrap=False, constraints=None, archive=None, ++ backup_id=None, upload_tools=False): ++ """Restore a backup archive to a new controller. ++ ++ :param bool bootstrap: Bootstrap a new state machine ++ :param constraints: Model constraints ++ :type constraints: :class:`juju.Constraints` ++ :param str archive: Path to backup archive to restore ++ :param str backup_id: Id of backup to restore ++ :param bool upload_tools: Upload tools if bootstrapping a new machine ++ ++ """ ++ raise NotImplementedError() ++ ++ def retry_provisioning(self): ++ """Retry provisioning for failed machines. ++ ++ """ ++ raise NotImplementedError() ++ ++ async def revoke(self, username): ++ """Revoke a user's access to this model. ++ ++ :param str username: Username to revoke ++ ++ """ ++ controller_conn = await self.connection.controller() ++ model_facade = client.ModelManagerFacade.from_connection( ++ controller_conn) ++ user = tag.user(username) ++ model = tag.model(self.info.uuid) ++ changes = client.ModifyModelAccess('read', 'revoke', model, user) ++ return await model_facade.ModifyModelAccess([changes]) ++ ++ def run(self, command, timeout=None): ++ """Run command on all machines in this model. ++ ++ :param str command: The command to run ++ :param int timeout: Time to wait before command is considered failed ++ ++ """ ++ raise NotImplementedError() ++ ++ async def set_config(self, config): ++ """Set configuration keys on this model. ++ ++ :param dict config: Mapping of config keys to either string values or ++ `ConfigValue` instances, as returned by `get_config`. ++ """ ++ config_facade = client.ModelConfigFacade.from_connection( ++ self.connection ++ ) ++ for key, value in config.items(): ++ if isinstance(value, ConfigValue): ++ config[key] = value.value ++ await config_facade.ModelSet(config) ++ ++ def set_constraints(self, constraints): ++ """Set machine constraints on this model. ++ ++ :param :class:`juju.Constraints` constraints: Machine constraints ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_action_output(self, action_uuid, wait=-1): ++ """Get the results of an action by ID. ++ ++ :param str action_uuid: Id of the action ++ :param int wait: Time in seconds to wait for action to complete ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_action_status(self, uuid_or_prefix=None, name=None): ++ """Get the status of all actions, filtered by ID, ID prefix, or action name. ++ ++ :param str uuid_or_prefix: Filter by action uuid or prefix ++ :param str name: Filter by action name ++ ++ """ ++ raise NotImplementedError() ++ ++ def get_budget(self, budget_name): ++ """Get budget usage info. ++ ++ :param str budget_name: Name of budget ++ ++ """ ++ raise NotImplementedError() ++ ++ async def get_status(self, filters=None, utc=False): ++ """Return the status of the model. ++ ++ :param str filters: Optional list of applications, units, or machines ++ to include, which can use wildcards ('*'). ++ :param bool utc: Display time as UTC in RFC3339 format ++ ++ """ ++ client_facade = client.ClientFacade.from_connection(self.connection) ++ return await client_facade.FullStatus(filters) ++ ++ def sync_tools( ++ self, all_=False, destination=None, dry_run=False, public=False, ++ source=None, stream=None, version=None): ++ """Copy Juju tools into this model. ++ ++ :param bool all_: Copy all versions, not just the latest ++ :param str destination: Path to local destination directory ++ :param bool dry_run: Don't do the actual copy ++ :param bool public: Tools are for a public cloud, so generate mirrors ++ information ++ :param str source: Path to local source directory ++ :param str stream: Simplestreams stream for which to sync metadata ++ :param str version: Copy a specific major.minor version ++ ++ """ ++ raise NotImplementedError() ++ ++ def unblock(self, *commands): ++ """Unblock an operation that would alter this model. ++ ++ :param str \*commands: The commands to unblock. Valid values are ++ 'all-changes', 'destroy-model', 'remove-object' ++ ++ """ ++ raise NotImplementedError() ++ ++ def unset_config(self, *keys): ++ """Unset configuration on this model. ++ ++ :param str \*keys: The keys to unset ++ ++ """ ++ raise NotImplementedError() ++ ++ def upgrade_gui(self): ++ """Upgrade the Juju GUI for this model. ++ ++ """ ++ raise NotImplementedError() ++ ++ def upgrade_juju( ++ self, dry_run=False, reset_previous_upgrade=False, ++ upload_tools=False, version=None): ++ """Upgrade Juju on all machines in a model. ++ ++ :param bool dry_run: Don't do the actual upgrade ++ :param bool reset_previous_upgrade: Clear the previous (incomplete) ++ upgrade status ++ :param bool upload_tools: Upload local version of tools ++ :param str version: Upgrade to a specific version ++ ++ """ ++ raise NotImplementedError() ++ ++ def upload_backup(self, archive_path): ++ """Store a backup archive remotely in Juju. ++ ++ :param str archive_path: Path to local archive ++ ++ """ ++ raise NotImplementedError() ++ ++ @property ++ def charmstore(self): ++ return self._charmstore ++ ++ async def get_metrics(self, *tags): ++ """Retrieve metrics. ++ ++ :param str \*tags: Tags of entities from which to retrieve metrics. ++ No tags retrieves the metrics of all units in the model. ++ :return: Dictionary of unit_name:metrics ++ ++ """ ++ log.debug("Retrieving metrics for %s", ++ ', '.join(tags) if tags else "all units") ++ ++ metrics_facade = client.MetricsDebugFacade.from_connection( ++ self.connection) ++ ++ entities = [client.Entity(tag) for tag in tags] ++ metrics_result = await metrics_facade.GetMetrics(entities) ++ ++ metrics = collections.defaultdict(list) ++ ++ for entity_metrics in metrics_result.results: ++ error = entity_metrics.error ++ if error: ++ if "is not a valid tag" in error: ++ raise ValueError(error.message) ++ else: ++ raise Exception(error.message) ++ ++ for metric in entity_metrics.metrics: ++ metrics[metric.unit].append(vars(metric)) ++ ++ return metrics ++ ++ ++def get_charm_series(path): ++ """Inspects the charm directory at ``path`` and returns a default ++ series from its metadata.yaml (the first item in the 'series' list). ++ ++ Returns None if no series can be determined. ++ ++ """ ++ md = Path(path) / "metadata.yaml" ++ if not md.exists(): ++ return None ++ data = yaml.load(md.open()) ++ series = data.get('series') ++ return series[0] if series else None ++ ++ ++class BundleHandler(object): ++ """ ++ Handle bundles by using the API to translate bundle YAML into a plan of ++ steps and then dispatching each of those using the API. ++ """ ++ def __init__(self, model): ++ self.model = model ++ self.charmstore = model.charmstore ++ self.plan = [] ++ self.references = {} ++ self._units_by_app = {} ++ for unit_name, unit in model.units.items(): ++ app_units = self._units_by_app.setdefault(unit.application, []) ++ app_units.append(unit_name) ++ self.client_facade = client.ClientFacade.from_connection( ++ model.connection) ++ self.app_facade = client.ApplicationFacade.from_connection( ++ model.connection) ++ self.ann_facade = client.AnnotationsFacade.from_connection( ++ model.connection) ++ ++ async def _handle_local_charms(self, bundle): ++ """Search for references to local charms (i.e. filesystem paths) ++ in the bundle. Upload the local charms to the model, and replace ++ the filesystem paths with appropriate 'local:' paths in the bundle. ++ ++ Return the modified bundle. ++ ++ :param dict bundle: Bundle dictionary ++ :return: Modified bundle dictionary ++ ++ """ ++ apps, args = [], [] ++ ++ default_series = bundle.get('series') ++ for app_name in self.applications: ++ app_dict = bundle['services'][app_name] ++ charm_dir = os.path.abspath(os.path.expanduser(app_dict['charm'])) ++ if not os.path.isdir(charm_dir): ++ continue ++ series = ( ++ app_dict.get('series') or ++ default_series or ++ get_charm_series(charm_dir) ++ ) ++ if not series: ++ raise JujuError( ++ "Couldn't determine series for charm at {}. " ++ "Add a 'series' key to the bundle.".format(charm_dir)) ++ ++ # Keep track of what we need to update. We keep a list of apps ++ # that need to be updated, and a corresponding list of args ++ # needed to update those apps. ++ apps.append(app_name) ++ args.append((charm_dir, series)) ++ ++ if apps: ++ # If we have apps to update, spawn all the coroutines concurrently ++ # and wait for them to finish. ++ charm_urls = await asyncio.gather(*[ ++ self.model.add_local_charm_dir(*params) ++ for params in args ++ ], loop=self.model.loop) ++ # Update the 'charm:' entry for each app with the new 'local:' url. ++ for app_name, charm_url in zip(apps, charm_urls): ++ bundle['services'][app_name]['charm'] = charm_url ++ ++ return bundle ++ ++ async def fetch_plan(self, entity_id): ++ is_local = not entity_id.startswith('cs:') and os.path.isdir(entity_id) ++ if is_local: ++ bundle_yaml = (Path(entity_id) / "bundle.yaml").read_text() ++ else: ++ bundle_yaml = await self.charmstore.files(entity_id, ++ filename='bundle.yaml', ++ read_file=True) ++ self.bundle = yaml.safe_load(bundle_yaml) ++ self.bundle = await self._handle_local_charms(self.bundle) ++ ++ self.plan = await self.client_facade.GetBundleChanges( ++ yaml.dump(self.bundle)) ++ ++ async def execute_plan(self): ++ for step in self.plan.changes: ++ method = getattr(self, step.method) ++ result = await method(*step.args) ++ self.references[step.id_] = result ++ ++ @property ++ def applications(self): ++ return list(self.bundle['services'].keys()) ++ ++ def resolve(self, reference): ++ if reference and reference.startswith('$'): ++ reference = self.references[reference[1:]] ++ return reference ++ ++ async def addCharm(self, charm, series): ++ """ ++ :param charm string: ++ Charm holds the URL of the charm to be added. ++ ++ :param series string: ++ Series holds the series of the charm to be added ++ if the charm default is not sufficient. ++ """ ++ # We don't add local charms because they've already been added ++ # by self._handle_local_charms ++ if charm.startswith('local:'): ++ return charm ++ ++ entity_id = await self.charmstore.entityId(charm) ++ log.debug('Adding %s', entity_id) ++ await self.client_facade.AddCharm(None, entity_id) ++ return entity_id ++ ++ async def addMachines(self, params=None): ++ """ ++ :param params dict: ++ Dictionary specifying the machine to add. All keys are optional. ++ Keys include: ++ ++ series: string specifying the machine OS series. ++ ++ constraints: string holding machine constraints, if any. We'll ++ parse this into the json friendly dict that the juju api ++ expects. ++ ++ container_type: string holding the type of the container (for ++ instance ""lxd" or kvm"). It is not specified for top level ++ machines. ++ ++ parent_id: string holding a placeholder pointing to another ++ machine change or to a unit change. This value is only ++ specified in the case this machine is a container, in ++ which case also ContainerType is set. ++ ++ """ ++ params = params or {} ++ ++ # Normalize keys ++ params = {normalize_key(k): params[k] for k in params.keys()} ++ ++ # Fix up values, as necessary. ++ if 'parent_id' in params: ++ params['parent_id'] = self.resolve(params['parent_id']) ++ ++ params['constraints'] = parse_constraints( ++ params.get('constraints')) ++ params['jobs'] = params.get('jobs', ['JobHostUnits']) ++ ++ if params.get('container_type') == 'lxc': ++ log.warning('Juju 2.0 does not support lxc containers. ' ++ 'Converting containers to lxd.') ++ params['container_type'] = 'lxd' ++ ++ # Submit the request. ++ params = client.AddMachineParams(**params) ++ results = await self.client_facade.AddMachines([params]) ++ error = results.machines[0].error ++ if error: ++ raise ValueError("Error adding machine: %s" % error.message) ++ machine = results.machines[0].machine ++ log.debug('Added new machine %s', machine) ++ return machine ++ ++ async def addRelation(self, endpoint1, endpoint2): ++ """ ++ :param endpoint1 string: ++ :param endpoint2 string: ++ Endpoint1 and Endpoint2 hold relation endpoints in the ++ "application:interface" form, where the application is always a ++ placeholder pointing to an application change, and the interface is ++ optional. Examples are "$deploy-42:web" or just "$deploy-42". ++ """ ++ endpoints = [endpoint1, endpoint2] ++ # resolve indirect references ++ for i in range(len(endpoints)): ++ parts = endpoints[i].split(':') ++ parts[0] = self.resolve(parts[0]) ++ endpoints[i] = ':'.join(parts) ++ ++ log.info('Relating %s <-> %s', *endpoints) ++ return await self.model.add_relation(*endpoints) ++ ++ async def deploy(self, charm, series, application, options, constraints, ++ storage, endpoint_bindings, resources): ++ """ ++ :param charm string: ++ Charm holds the URL of the charm to be used to deploy this ++ application. ++ ++ :param series string: ++ Series holds the series of the application to be deployed ++ if the charm default is not sufficient. ++ ++ :param application string: ++ Application holds the application name. ++ ++ :param options map[string]interface{}: ++ Options holds application options. ++ ++ :param constraints string: ++ Constraints holds the optional application constraints. ++ ++ :param storage map[string]string: ++ Storage holds the optional storage constraints. ++ ++ :param endpoint_bindings map[string]string: ++ EndpointBindings holds the optional endpoint bindings ++ ++ :param resources map[string]int: ++ Resources identifies the revision to use for each resource ++ of the application's charm. ++ """ ++ # resolve indirect references ++ charm = self.resolve(charm) ++ # the bundle plan doesn't actually do anything with resources, even ++ # though it ostensibly gives us something (None) for that param ++ if not charm.startswith('local:'): ++ resources = await self.model._add_store_resources(application, ++ charm) ++ await self.model._deploy( ++ charm_url=charm, ++ application=application, ++ series=series, ++ config=options, ++ constraints=constraints, ++ endpoint_bindings=endpoint_bindings, ++ resources=resources, ++ storage=storage, ++ ) ++ return application ++ ++ async def addUnit(self, application, to): ++ """ ++ :param application string: ++ Application holds the application placeholder name for which a unit ++ is added. ++ ++ :param to string: ++ To holds the optional location where to add the unit, as a ++ placeholder pointing to another unit change or to a machine change. ++ """ ++ application = self.resolve(application) ++ placement = self.resolve(to) ++ if self._units_by_app.get(application): ++ # enough units for this application already exist; ++ # claim one, and carry on ++ # NB: this should probably honor placement, but the juju client ++ # doesn't, so we're not bothering, either ++ unit_name = self._units_by_app[application].pop() ++ log.debug('Reusing unit %s for %s', unit_name, application) ++ return self.model.units[unit_name] ++ ++ log.debug('Adding new unit for %s%s', application, ++ ' to %s' % placement if placement else '') ++ return await self.model.applications[application].add_unit( ++ count=1, ++ to=placement, ++ ) ++ ++ async def expose(self, application): ++ """ ++ :param application string: ++ Application holds the placeholder name of the application that must ++ be exposed. ++ """ ++ application = self.resolve(application) ++ log.info('Exposing %s', application) ++ return await self.model.applications[application].expose() ++ ++ async def setAnnotations(self, id_, entity_type, annotations): ++ """ ++ :param id_ string: ++ Id is the placeholder for the application or machine change ++ corresponding to the entity to be annotated. ++ ++ :param entity_type EntityType: ++ EntityType holds the type of the entity, "application" or ++ "machine". ++ ++ :param annotations map[string]string: ++ Annotations holds the annotations as key/value pairs. ++ """ ++ entity_id = self.resolve(id_) ++ try: ++ entity = self.model.state.get_entity(entity_type, entity_id) ++ except KeyError: ++ entity = await self.model._wait_for_new(entity_type, entity_id) ++ return await entity.set_annotations(annotations) ++ ++ ++class CharmStore(object): ++ """ ++ Async wrapper around theblues.charmstore.CharmStore ++ """ ++ def __init__(self, loop): ++ self.loop = loop ++ self._cs = theblues.charmstore.CharmStore(timeout=5) ++ ++ def __getattr__(self, name): ++ """ ++ Wrap method calls in coroutines that use run_in_executor to make them ++ async. ++ """ ++ attr = getattr(self._cs, name) ++ if not callable(attr): ++ wrapper = partial(getattr, self._cs, name) ++ setattr(self, name, wrapper) ++ else: ++ async def coro(*args, **kwargs): ++ method = partial(attr, *args, **kwargs) ++ for attempt in range(1, 4): ++ try: ++ return await self.loop.run_in_executor(None, method) ++ except theblues.errors.ServerError: ++ if attempt == 3: ++ raise ++ await asyncio.sleep(1, loop=self.loop) ++ setattr(self, name, coro) ++ wrapper = coro ++ return wrapper ++ ++ ++class CharmArchiveGenerator(object): ++ """ ++ Create a Zip archive of a local charm directory for upload to a controller. ++ ++ This is used automatically by ++ `Model.add_local_charm_dir <#juju.model.Model.add_local_charm_dir>`_. ++ """ ++ def __init__(self, path): ++ self.path = os.path.abspath(os.path.expanduser(path)) ++ ++ def make_archive(self, path): ++ """Create archive of directory and write to ``path``. ++ ++ :param path: Path to archive ++ ++ Ignored:: ++ ++ * build/\* - This is used for packing the charm itself and any ++ similar tasks. ++ * \*/.\* - Hidden files are all ignored for now. This will most ++ likely be changed into a specific ignore list ++ (.bzr, etc) ++ ++ """ ++ zf = zipfile.ZipFile(path, 'w', zipfile.ZIP_DEFLATED) ++ for dirpath, dirnames, filenames in os.walk(self.path): ++ relative_path = dirpath[len(self.path) + 1:] ++ if relative_path and not self._ignore(relative_path): ++ zf.write(dirpath, relative_path) ++ for name in filenames: ++ archive_name = os.path.join(relative_path, name) ++ if not self._ignore(archive_name): ++ real_path = os.path.join(dirpath, name) ++ self._check_type(real_path) ++ if os.path.islink(real_path): ++ self._check_link(real_path) ++ self._write_symlink( ++ zf, os.readlink(real_path), archive_name) ++ else: ++ zf.write(real_path, archive_name) ++ zf.close() ++ return path ++ ++ def _check_type(self, path): ++ """Check the path ++ """ ++ s = os.stat(path) ++ if stat.S_ISDIR(s.st_mode) or stat.S_ISREG(s.st_mode): ++ return path ++ raise ValueError("Invalid Charm at % %s" % ( ++ path, "Invalid file type for a charm")) ++ ++ def _check_link(self, path): ++ link_path = os.readlink(path) ++ if link_path[0] == "/": ++ raise ValueError( ++ "Invalid Charm at %s: %s" % ( ++ path, "Absolute links are invalid")) ++ path_dir = os.path.dirname(path) ++ link_path = os.path.join(path_dir, link_path) ++ if not link_path.startswith(os.path.abspath(self.path)): ++ raise ValueError( ++ "Invalid charm at %s %s" % ( ++ path, "Only internal symlinks are allowed")) ++ ++ def _write_symlink(self, zf, link_target, link_path): ++ """Package symlinks with appropriate zipfile metadata.""" ++ info = zipfile.ZipInfo() ++ info.filename = link_path ++ info.create_system = 3 ++ # Magic code for symlinks / py2/3 compat ++ # 27166663808 = (stat.S_IFLNK | 0755) << 16 ++ info.external_attr = 2716663808 ++ zf.writestr(info, link_target) ++ ++ def _ignore(self, path): ++ if path == "build" or path.startswith("build/"): ++ return True ++ if path.startswith('.'): ++ return True diff --cc modules/libjuju/juju/placement.py index 0000000,0000000..d0d42f7 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/placement.py @@@ -1,0 -1,0 +1,58 @@@ ++# ++# This module allows us to parse a machine placement directive into a ++# Placement object suitable for passing through the websocket API. ++# ++# Once https://bugs.launchpad.net/juju/+bug/1645480 is addressed, this ++# module should be deprecated. ++# ++ ++from .client import client ++ ++MACHINE_SCOPE = "#" ++ ++ ++def parse(directive): ++ """ ++ Given a string in the format `scope:directive`, or simply `scope` ++ or `directive`, return a Placement object suitable for passing ++ back over the websocket API. ++ ++ """ ++ if not directive: ++ # Handle null case ++ return None ++ ++ if isinstance(directive, (list, tuple)): ++ results = [] ++ for d in directive: ++ results.extend(parse(d)) ++ return results ++ ++ if isinstance(directive, (dict, client.Placement)): ++ # We've been handed something that we can simply hand back to ++ # the api. (Forwards compatibility) ++ return [directive] ++ ++ # Juju 2.0 can't handle lxc containers. ++ directive = directive.replace('lxc', 'lxd') ++ ++ if ":" in directive: ++ # Planner has given us a scope and directive in string form ++ scope, directive = directive.split(":") ++ return [client.Placement(scope=scope, directive=directive)] ++ ++ if directive.isdigit(): ++ # Planner has given us a machine id (we rely on juju core to ++ # verify its validity.) ++ return [client.Placement(scope=MACHINE_SCOPE, directive=directive)] ++ ++ if "/" in directive: ++ # e.g. "0/lxd/0" ++ # https://github.com/juju/juju/blob/master/instance/placement_test.go#L29 ++ return [ ++ client.Placement(scope=MACHINE_SCOPE, directive=directive), ++ ] ++ ++ # Planner has probably given us a container type. Leave it up to ++ # juju core to verify that it is valid. ++ return [client.Placement(scope=directive)] diff --cc modules/libjuju/juju/relation.py index 0000000,0000000..ef8946a new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/relation.py @@@ -1,0 -1,0 +1,11 @@@ ++import logging ++ ++from . import model ++ ++log = logging.getLogger(__name__) ++ ++ ++class Relation(model.ModelEntity): ++ async def destroy(self): ++ raise NotImplementedError() ++ # TODO: destroy a relation diff --cc modules/libjuju/juju/tag.py index 0000000,0000000..2514229 new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/tag.py @@@ -1,0 -1,0 +1,31 @@@ ++def _prefix(prefix, s): ++ if s and not s.startswith(prefix): ++ return '{}{}'.format(prefix, s) ++ return s ++ ++ ++def untag(prefix, s): ++ if s and s.startswith(prefix): ++ return s[len(prefix):] ++ return s ++ ++ ++def cloud(cloud_name): ++ return _prefix('cloud-', cloud_name) ++ ++ ++def credential(cloud, user, credential_name): ++ credential_string = '{}_{}_{}'.format(cloud, user, credential_name) ++ return _prefix('cloudcred-', credential_string) ++ ++ ++def model(cloud_name): ++ return _prefix('model-', cloud_name) ++ ++ ++def user(username): ++ return _prefix('user-', username) ++ ++ ++def application(app_name): ++ return _prefix('application-', app_name) diff --cc modules/libjuju/juju/unit.py index 0000000,0000000..fc597bf new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/unit.py @@@ -1,0 -1,0 +1,274 @@@ ++import logging ++ ++from dateutil.parser import parse as parse_date ++ ++from . import model ++from .client import client ++ ++log = logging.getLogger(__name__) ++ ++ ++class Unit(model.ModelEntity): ++ @property ++ def agent_status(self): ++ """Returns the current agent status string. ++ ++ """ ++ return self.safe_data['agent-status']['current'] ++ ++ @property ++ def agent_status_since(self): ++ """Get the time when the `agent_status` was last updated. ++ ++ """ ++ return parse_date(self.safe_data['agent-status']['since']) ++ ++ @property ++ def agent_status_message(self): ++ """Get the agent status message. ++ ++ """ ++ return self.safe_data['agent-status']['message'] ++ ++ @property ++ def workload_status(self): ++ """Returns the current workload status string. ++ ++ """ ++ return self.safe_data['workload-status']['current'] ++ ++ @property ++ def workload_status_since(self): ++ """Get the time when the `workload_status` was last updated. ++ ++ """ ++ return parse_date(self.safe_data['workload-status']['since']) ++ ++ @property ++ def workload_status_message(self): ++ """Get the workload status message. ++ ++ """ ++ return self.safe_data['workload-status']['message'] ++ ++ @property ++ def machine(self): ++ """Get the machine object for this unit. ++ ++ """ ++ machine_id = self.safe_data['machine-id'] ++ if machine_id: ++ return self.model.machines.get(machine_id, None) ++ else: ++ return None ++ ++ @property ++ def public_address(self): ++ """ Get the public address. ++ ++ """ ++ return self.safe_data['public-address'] or None ++ ++ @property ++ def tag(self): ++ return 'unit-%s' % self.name.replace('/', '-') ++ ++ def add_storage(self, name, constraints=None): ++ """Add unit storage dynamically. ++ ++ :param str name: Storage name, as specified by the charm ++ :param str constraints: Comma-separated list of constraints in the ++ form 'POOL,COUNT,SIZE' ++ ++ """ ++ raise NotImplementedError() ++ ++ def collect_metrics(self): ++ """Collect metrics on this unit. ++ ++ """ ++ raise NotImplementedError() ++ ++ async def destroy(self): ++ """Destroy this unit. ++ ++ """ ++ app_facade = client.ApplicationFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Destroying %s', self.name) ++ ++ return await app_facade.DestroyUnits([self.name]) ++ remove = destroy ++ ++ def get_resources(self, details=False): ++ """Return resources for this unit. ++ ++ :param bool details: Include detailed info about resources used by each ++ unit ++ ++ """ ++ raise NotImplementedError() ++ ++ def resolved(self, retry=False): ++ """Mark unit errors resolved. ++ ++ :param bool retry: Re-execute failed hooks ++ ++ """ ++ raise NotImplementedError() ++ ++ async def run(self, command, timeout=None): ++ """Run command on this unit. ++ ++ :param str command: The command to run ++ :param int timeout: Time to wait before command is considered failed ++ :returns: A :class:`juju.action.Action` instance. ++ ++ """ ++ action = client.ActionFacade.from_connection(self.connection) ++ ++ log.debug( ++ 'Running `%s` on %s', command, self.name) ++ ++ res = await action.Run( ++ [], ++ command, ++ [], ++ timeout, ++ [self.name], ++ ) ++ return await self.model.wait_for_action(res.results[0].action.tag) ++ ++ async def run_action(self, action_name, **params): ++ """Run an action on this unit. ++ ++ :param str action_name: Name of action to run ++ :param \*\*params: Action parameters ++ :returns: A :class:`juju.action.Action` instance. ++ ++ Note that this only enqueues the action. You will need to call ++ ``action.wait()`` on the resulting `Action` instance if you wish ++ to block until the action is complete. ++ ++ """ ++ action_facade = client.ActionFacade.from_connection(self.connection) ++ ++ log.debug('Starting action `%s` on %s', action_name, self.name) ++ ++ res = await action_facade.Enqueue([client.Action( ++ name=action_name, ++ parameters=params, ++ receiver=self.tag, ++ )]) ++ action = res.results[0].action ++ error = res.results[0].error ++ if error and error.code == 'not found': ++ raise ValueError('Action `%s` not found on %s' % (action_name, ++ self.name)) ++ elif error: ++ raise Exception('Unknown action error: %s' % error.serialize()) ++ action_id = action.tag[len('action-'):] ++ log.debug('Action started as %s', action_id) ++ # we mustn't use wait_for_action because that blocks until the ++ # action is complete, rather than just being in the model ++ return await self.model._wait_for_new('action', action_id) ++ ++ async def scp_to(self, source, destination, user='ubuntu', proxy=False, ++ scp_opts=''): ++ """Transfer files to this unit. ++ ++ :param str source: Local path of file(s) to transfer ++ :param str destination: Remote destination of transferred files ++ :param str user: Remote username ++ :param bool proxy: Proxy through the Juju API server ++ :param str scp_opts: Additional options to the `scp` command ++ """ ++ await self.machine.scp_to(source, destination, user=user, proxy=proxy, ++ scp_opts=scp_opts) ++ ++ async def scp_from(self, source, destination, user='ubuntu', proxy=False, ++ scp_opts=''): ++ """Transfer files from this unit. ++ ++ :param str source: Remote path of file(s) to transfer ++ :param str destination: Local destination of transferred files ++ :param str user: Remote username ++ :param bool proxy: Proxy through the Juju API server ++ :param str scp_opts: Additional options to the `scp` command ++ """ ++ await self.machine.scp_from(source, destination, user=user, ++ proxy=proxy, scp_opts=scp_opts) ++ ++ def set_meter_status(self): ++ """Set the meter status on this unit. ++ ++ """ ++ raise NotImplementedError() ++ ++ def ssh( ++ self, command, user=None, proxy=False, ssh_opts=None): ++ """Execute a command over SSH on this unit. ++ ++ :param str command: Command to execute ++ :param str user: Remote username ++ :param bool proxy: Proxy through the Juju API server ++ :param str ssh_opts: Additional options to the `ssh` command ++ ++ """ ++ raise NotImplementedError() ++ ++ def status_history(self, num=20, utc=False): ++ """Get status history for this unit. ++ ++ :param int num: Size of history backlog ++ :param bool utc: Display time as UTC in RFC3339 format ++ ++ """ ++ raise NotImplementedError() ++ ++ async def is_leader_from_status(self): ++ """ ++ Check to see if this unit is the leader. Returns True if so, and ++ False if it is not, or if leadership does not make sense ++ (e.g., there is no leader in this application.) ++ ++ This method is a kluge that calls FullStatus in the ++ ClientFacade to get its information. Once ++ https://bugs.launchpad.net/juju/+bug/1643691 is resolved, we ++ should add a simple .is_leader property, and deprecate this ++ method. ++ ++ """ ++ app = self.name.split("/")[0] ++ ++ c = client.ClientFacade.from_connection(self.connection) ++ ++ status = await c.FullStatus(None) ++ ++ # FullStatus may be more up to date than our model, and the ++ # unit may have gone away, or we may be doing something silly, ++ # like trying to fetch leadership for a subordinate, which ++ # will not be filed where we expect in the model. In those ++ # cases, we may simply return False, as a nonexistent or ++ # subordinate unit is not a leader. ++ if not status.applications.get(app): ++ return False ++ ++ if not status.applications[app].get('units'): ++ return False ++ ++ if not status.applications[app]['units'].get(self.name): ++ return False ++ ++ return status.applications[app]['units'][self.name].get('leader', ++ False) ++ ++ async def get_metrics(self): ++ """Get metrics for the unit. ++ ++ :return: Dictionary of metrics for this unit. ++ ++ """ ++ metrics = await self.model.get_metrics(self.tag) ++ return metrics[self.name] diff --cc modules/libjuju/juju/utils.py index 0000000,0000000..1d1b24e new file mode 100644 --- /dev/null +++ b/modules/libjuju/juju/utils.py @@@ -1,0 -1,0 +1,98 @@@ ++import asyncio ++import os ++from collections import defaultdict ++from functools import partial ++from pathlib import Path ++ ++ ++async def execute_process(*cmd, log=None, loop=None): ++ ''' ++ Wrapper around asyncio.create_subprocess_exec. ++ ++ ''' ++ p = await asyncio.create_subprocess_exec( ++ *cmd, ++ stdin=asyncio.subprocess.PIPE, ++ stdout=asyncio.subprocess.PIPE, ++ stderr=asyncio.subprocess.PIPE, ++ loop=loop) ++ stdout, stderr = await p.communicate() ++ if log: ++ log.debug("Exec %s -> %d", cmd, p.returncode) ++ if stdout: ++ log.debug(stdout.decode('utf-8')) ++ if stderr: ++ log.debug(stderr.decode('utf-8')) ++ return p.returncode == 0 ++ ++ ++def _read_ssh_key(): ++ ''' ++ Inner function for read_ssh_key, suitable for passing to our ++ Executor. ++ ++ ''' ++ default_data_dir = Path(Path.home(), ".local", "share", "juju") ++ juju_data = os.environ.get("JUJU_DATA", default_data_dir) ++ ssh_key_path = Path(juju_data, 'ssh', 'juju_id_rsa.pub') ++ with ssh_key_path.open('r') as ssh_key_file: ++ ssh_key = ssh_key_file.readlines()[0].strip() ++ return ssh_key ++ ++ ++async def read_ssh_key(loop): ++ ''' ++ Attempt to read the local juju admin's public ssh key, so that it ++ can be passed on to a model. ++ ++ ''' ++ return await loop.run_in_executor(None, _read_ssh_key) ++ ++ ++class IdQueue: ++ """ ++ Wrapper around asyncio.Queue that maintains a separate queue for each ID. ++ """ ++ def __init__(self, maxsize=0, *, loop=None): ++ self._queues = defaultdict(partial(asyncio.Queue, maxsize, loop=loop)) ++ ++ async def get(self, id): ++ value = await self._queues[id].get() ++ del self._queues[id] ++ if isinstance(value, Exception): ++ raise value ++ return value ++ ++ async def put(self, id, value): ++ await self._queues[id].put(value) ++ ++ async def put_all(self, value): ++ for queue in self._queues.values(): ++ await queue.put(value) ++ ++ ++async def run_with_interrupt(task, event, loop=None): ++ """ ++ Awaits a task while allowing it to be interrupted by an `asyncio.Event`. ++ ++ If the task finishes without the event becoming set, the results of the ++ task will be returned. If the event becomes set, the task will be ++ cancelled ``None`` will be returned. ++ ++ :param task: Task to run ++ :param event: An `asyncio.Event` which, if set, will interrupt `task` ++ and cause it to be cancelled. ++ :param loop: Optional event loop to use other than the default. ++ """ ++ loop = loop or asyncio.get_event_loop() ++ event_task = loop.create_task(event.wait()) ++ done, pending = await asyncio.wait([task, event_task], ++ loop=loop, ++ return_when=asyncio.FIRST_COMPLETED) ++ for f in pending: ++ f.cancel() ++ result = [f.result() for f in done if f is not event_task] ++ if result: ++ return result[0] ++ else: ++ return None diff --cc modules/libjuju/scripts/gendoc index 0000000,0000000..3ef628e new file mode 100755 --- /dev/null +++ b/modules/libjuju/scripts/gendoc @@@ -1,0 -1,0 +1,39 @@@ ++#!/bin/bash ++packages=( ++ juju.action ++ juju.annotation ++ juju.application ++ juju.cloud ++ juju.constraints ++ juju.controller ++ juju.delta ++ juju.errors ++ juju.exceptions ++ juju.juju ++ juju.loop ++ juju.machine ++ juju.model ++ juju.placement ++ juju.relation ++ juju.tag ++ juju.unit ++ juju.utils ++) ++ ++for pkg in ${packages[@]}; do ++ cat < docs/api/$pkg.rst ++$pkg ++$(echo $pkg | sed -e 's/./=/g') ++ ++.. rubric:: Summary ++ ++.. automembersummary:: $pkg ++ ++.. rubric:: Reference ++ ++.. automodule:: $pkg ++ :members: ++ :undoc-members: ++ :show-inheritance: ++EOD ++done diff --cc modules/libjuju/setup.py index 0000000,0000000..df12cfe new file mode 100644 --- /dev/null +++ b/modules/libjuju/setup.py @@@ -1,0 -1,0 +1,56 @@@ ++# Copyright 2016 Canonical Ltd. ++# ++# 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. ++ ++from pathlib import Path ++from setuptools import setup, find_packages ++ ++here = Path(__file__).absolute().parent ++readme = here / 'docs' / 'readme.rst' ++changelog = here / 'docs' / 'changelog.rst' ++long_description = '{}\n\n{}'.format( ++ readme.read_text(), ++ changelog.read_text() ++) ++version = here / 'VERSION' ++ ++setup( ++ name='juju', ++ version=version.read_text().strip(), ++ packages=find_packages( ++ exclude=["*.tests", "*.tests.*", "tests.*", "tests"]), ++ install_requires=[ ++ 'websockets', ++ 'pyyaml', ++ 'theblues', ++ 'python-dateutil' ++ ], ++ include_package_data=True, ++ maintainer='Juju Ecosystem Engineering', ++ maintainer_email='juju@lists.ubuntu.com', ++ description=('Python library for Juju'), ++ long_description=long_description, ++ url='https://github.com/juju/python-libjuju', ++ license='Apache 2', ++ classifiers=[ ++ "Development Status :: 3 - Alpha", ++ "Intended Audience :: Developers", ++ "Programming Language :: Python", ++ "Programming Language :: Python :: 3", ++ "Programming Language :: Python :: 3.5", ++ ], ++ entry_points={ ++ 'console_scripts': [ ++ ], ++ }, ++) diff --cc modules/libjuju/tests/__init__.py index 0000000,0000000..e69de29 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/__init__.py diff --cc modules/libjuju/tests/base.py index 0000000,0000000..e1ec452 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/base.py @@@ -1,0 -1,0 +1,67 @@@ ++import mock ++import subprocess ++import uuid ++ ++import pytest ++ ++from juju.controller import Controller ++from juju.client.connection import JujuData ++ ++ ++def is_bootstrapped(): ++ result = subprocess.run(['juju', 'switch'], stdout=subprocess.PIPE) ++ return ( ++ result.returncode == 0 and ++ len(result.stdout.decode().strip()) > 0) ++ ++bootstrapped = pytest.mark.skipif( ++ not is_bootstrapped(), ++ reason='bootstrapped Juju environment required') ++ ++ ++class CleanController(): ++ def __init__(self): ++ self.controller = None ++ ++ async def __aenter__(self): ++ self.controller = Controller() ++ await self.controller.connect_current() ++ return self.controller ++ ++ async def __aexit__(self, exc_type, exc, tb): ++ await self.controller.disconnect() ++ ++ ++class CleanModel(): ++ def __init__(self): ++ self.controller = None ++ self.model = None ++ ++ async def __aenter__(self): ++ self.controller = Controller() ++ await self.controller.connect_current() ++ ++ model_name = 'model-{}'.format(uuid.uuid4()) ++ self.model = await self.controller.add_model(model_name) ++ ++ # save the model UUID in case test closes model ++ self.model_uuid = self.model.info.uuid ++ ++ # Ensure that we connect to the new model by default. This also ++ # prevents failures if test was started with no current model. ++ self._patch_cm = mock.patch.object(JujuData, 'current_model', ++ return_value=model_name) ++ self._patch_cm.start() ++ ++ return self.model ++ ++ async def __aexit__(self, exc_type, exc, tb): ++ self._patch_cm.stop() ++ await self.model.disconnect() ++ await self.controller.destroy_model(self.model_uuid) ++ await self.controller.disconnect() ++ ++ ++class AsyncMock(mock.MagicMock): ++ async def __call__(self, *args, **kwargs): ++ return super().__call__(*args, **kwargs) diff --cc modules/libjuju/tests/bundle/bundle.yaml index 0000000,0000000..19a45ec new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/bundle/bundle.yaml @@@ -1,0 -1,0 +1,28 @@@ ++series: xenial ++services: ++ wordpress: ++ charm: "cs:trusty/wordpress-2" ++ num_units: 1 ++ annotations: ++ "gui-x": "339.5" ++ "gui-y": "-171" ++ to: ++ - "0" ++ mysql: ++ charm: "cs:trusty/mysql-26" ++ num_units: 1 ++ annotations: ++ "gui-x": "79.5" ++ "gui-y": "-142" ++ to: ++ - "1" ++relations: ++ - - "wordpress:db" ++ - "mysql:db" ++machines: ++ "0": ++ series: trusty ++ constraints: "arch=amd64 cores=1 cpu-power=100 mem=1740 root-disk=8192" ++ "1": ++ series: trusty ++ constraints: "arch=amd64 cores=1 cpu-power=100 mem=1740 root-disk=8192" diff --cc modules/libjuju/tests/charm/metadata.yaml index 0000000,0000000..74eab3d new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/charm/metadata.yaml @@@ -1,0 -1,0 +1,5 @@@ ++name: charm ++series: ["xenial"] ++summary: "test" ++description: "test" ++maintainers: ["test"] diff --cc modules/libjuju/tests/integration/__init__.py index 0000000,0000000..e69de29 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/__init__.py diff --cc modules/libjuju/tests/integration/bundle/bundle.yaml index 0000000,0000000..d0245c5 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/bundle/bundle.yaml @@@ -1,0 -1,0 +1,12 @@@ ++series: xenial ++services: ++ ghost: ++ charm: "cs:ghost-19" ++ num_units: 1 ++ mysql: ++ charm: "cs:trusty/mysql-57" ++ num_units: 1 ++ test: ++ charm: "./tests/integration/charm" ++relations: ++ - ["ghost", "mysql"] diff --cc modules/libjuju/tests/integration/charm/metadata.yaml index 0000000,0000000..74eab3d new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/charm/metadata.yaml @@@ -1,0 -1,0 +1,5 @@@ ++name: charm ++series: ["xenial"] ++summary: "test" ++description: "test" ++maintainers: ["test"] diff --cc modules/libjuju/tests/integration/test_application.py index 0000000,0000000..1a4fcaa new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_application.py @@@ -1,0 -1,0 +1,94 @@@ ++import pytest ++ ++from .. import base ++ ++MB = 1 ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_action(event_loop): ++ async with base.CleanModel() as model: ++ ubuntu_app = await model.deploy( ++ 'mysql', ++ application_name='mysql', ++ series='trusty', ++ channel='stable', ++ config={ ++ 'tuning-level': 'safest', ++ }, ++ constraints={ ++ 'mem': 256 * MB, ++ }, ++ ) ++ ++ # update and check app config ++ await ubuntu_app.set_config({'tuning-level': 'fast'}) ++ config = await ubuntu_app.get_config() ++ assert config['tuning-level']['value'] == 'fast' ++ ++ # update and check app constraints ++ await ubuntu_app.set_constraints({'mem': 512 * MB}) ++ constraints = await ubuntu_app.get_constraints() ++ assert constraints['mem'] == 512 * MB ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_add_units(event_loop): ++ from juju.unit import Unit ++ ++ async with base.CleanModel() as model: ++ app = await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ units = await app.add_units(count=2) ++ ++ assert len(units) == 2 ++ for unit in units: ++ assert isinstance(unit, Unit) ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_upgrade_charm(event_loop): ++ async with base.CleanModel() as model: ++ app = await model.deploy('ubuntu-0') ++ assert app.data['charm-url'] == 'cs:ubuntu-0' ++ await app.upgrade_charm() ++ assert app.data['charm-url'].startswith('cs:ubuntu-') ++ assert app.data['charm-url'] != 'cs:ubuntu-0' ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_upgrade_charm_channel(event_loop): ++ async with base.CleanModel() as model: ++ app = await model.deploy('ubuntu-0') ++ assert app.data['charm-url'] == 'cs:ubuntu-0' ++ await app.upgrade_charm(channel='stable') ++ assert app.data['charm-url'].startswith('cs:ubuntu-') ++ assert app.data['charm-url'] != 'cs:ubuntu-0' ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_upgrade_charm_revision(event_loop): ++ async with base.CleanModel() as model: ++ app = await model.deploy('ubuntu-0') ++ assert app.data['charm-url'] == 'cs:ubuntu-0' ++ await app.upgrade_charm(revision=8) ++ assert app.data['charm-url'] == 'cs:ubuntu-8' ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_upgrade_charm_switch(event_loop): ++ async with base.CleanModel() as model: ++ app = await model.deploy('ubuntu-0') ++ assert app.data['charm-url'] == 'cs:ubuntu-0' ++ await app.upgrade_charm(switch='ubuntu-8') ++ assert app.data['charm-url'] == 'cs:ubuntu-8' diff --cc modules/libjuju/tests/integration/test_client.py index 0000000,0000000..e4c9c92 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_client.py @@@ -1,0 -1,0 +1,21 @@@ ++import pytest ++ ++from juju.client import client ++ ++from .. import base ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_user_info(event_loop): ++ async with base.CleanModel() as model: ++ controller_conn = await model.connection.controller() ++ ++ um = client.UserManagerFacade.from_connection(controller_conn) ++ result = await um.UserInfo( ++ [client.Entity('user-admin')], True) ++ await controller_conn.close() ++ ++ assert isinstance(result, client.UserInfoResults) ++ for r in result.results: ++ assert isinstance(r, client.UserInfoResult) diff --cc modules/libjuju/tests/integration/test_connection.py index 0000000,0000000..290203d new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_connection.py @@@ -1,0 -1,0 +1,83 @@@ ++import asyncio ++import pytest ++ ++from juju.client.connection import Connection ++from juju.client import client ++from .. import base ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_connect_current(event_loop): ++ async with base.CleanModel(): ++ conn = await Connection.connect_current() ++ ++ assert isinstance(conn, Connection) ++ await conn.close() ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_monitor(event_loop): ++ ++ async with base.CleanModel(): ++ conn = await Connection.connect_current() ++ ++ assert conn.monitor.status == 'connected' ++ await conn.close() ++ ++ assert conn.monitor.status == 'disconnected' ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_monitor_catches_error(event_loop): ++ ++ async with base.CleanModel(): ++ conn = await Connection.connect_current() ++ ++ assert conn.monitor.status == 'connected' ++ await conn.ws.close() ++ ++ assert conn.monitor.status == 'error' ++ ++ await conn.close() ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_full_status(event_loop): ++ async with base.CleanModel() as model: ++ await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ c = client.ClientFacade.from_connection(model.connection) ++ ++ await c.FullStatus(None) ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_reconnect(event_loop): ++ async with base.CleanModel() as model: ++ conn = await Connection.connect( ++ model.connection.endpoint, ++ model.connection.uuid, ++ model.connection.username, ++ model.connection.password, ++ model.connection.cacert, ++ model.connection.macaroons, ++ model.connection.loop, ++ model.connection.max_frame_size) ++ try: ++ await asyncio.sleep(0.1) ++ assert conn.is_open ++ await conn.ws.close() ++ assert not conn.is_open ++ await model.block_until(lambda: conn.is_open, timeout=3) ++ finally: ++ await conn.close() diff --cc modules/libjuju/tests/integration/test_controller.py index 0000000,0000000..f3840cc new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_controller.py @@@ -1,0 -1,0 +1,77 @@@ ++import pytest ++import uuid ++ ++from .. import base ++from juju.controller import Controller ++from juju.errors import JujuAPIError ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_add_user(event_loop): ++ async with base.CleanController() as controller: ++ username = 'test{}'.format(uuid.uuid4()) ++ await controller.add_user(username) ++ result = await controller.get_user(username) ++ res_ser = result.serialize()['results'][0].serialize() ++ assert res_ser['result'] is not None ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_disable_enable_user(event_loop): ++ async with base.CleanController() as controller: ++ username = 'test-disable{}'.format(uuid.uuid4()) ++ await controller.add_user(username) ++ await controller.disable_user(username) ++ result = await controller.get_user(username) ++ res_ser = result.serialize()['results'][0].serialize() ++ assert res_ser['result'].serialize()['disabled'] is True ++ await controller.enable_user(username) ++ result = await controller.get_user(username) ++ res_ser = result.serialize()['results'][0].serialize() ++ assert res_ser['result'].serialize()['disabled'] is False ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_change_user_password(event_loop): ++ async with base.CleanController() as controller: ++ username = 'test-password{}'.format(uuid.uuid4()) ++ await controller.add_user(username) ++ await controller.change_user_password(username, 'password') ++ try: ++ new_controller = Controller() ++ await new_controller.connect( ++ controller.connection.endpoint, username, 'password') ++ result = True ++ await new_controller.disconnect() ++ except JujuAPIError: ++ result = False ++ assert result is True ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_grant(event_loop): ++ async with base.CleanController() as controller: ++ username = 'test-grant{}'.format(uuid.uuid4()) ++ await controller.add_user(username) ++ await controller.grant(username, 'superuser') ++ result = await controller.get_user(username) ++ result = result.serialize()['results'][0].serialize()['result']\ ++ .serialize() ++ assert result['access'] == 'superuser' ++ await controller.grant(username, 'login') ++ result = await controller.get_user(username) ++ result = result.serialize()['results'][0].serialize()['result']\ ++ .serialize() ++ assert result['access'] == 'login' ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_get_models(event_loop): ++ async with base.CleanController() as controller: ++ result = await controller.get_models() ++ assert isinstance(result.serialize()['user-models'], list) diff --cc modules/libjuju/tests/integration/test_errors.py index 0000000,0000000..06b3826 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_errors.py @@@ -1,0 -1,0 +1,68 @@@ ++import pytest ++ ++from .. import base ++ ++MB = 1 ++GB = 1024 ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_juju_api_error(event_loop): ++ ''' ++ Verify that we raise a JujuAPIError for responses with an error in ++ a top level key (for completely invalid requests). ++ ++ ''' ++ from juju.errors import JujuAPIError ++ ++ async with base.CleanModel() as model: ++ with pytest.raises(JujuAPIError): ++ await model.add_machine(constraints={'mem': 'foo'}) ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_juju_error_in_results_list(event_loop): ++ ''' ++ Replicate the code that caused ++ https://github.com/juju/python-libjuju/issues/67, and verify that ++ we get a JujuError instead of passing silently by the failure. ++ ++ (We don't raise a JujuAPIError, because the request isn't ++ completely invalid -- it's just passing a tag that doesn't exist.) ++ ++ This also verifies that we will raise a JujuError any time there ++ is an error in one of a list of results. ++ ++ ''' ++ from juju.errors import JujuError ++ from juju.client import client ++ ++ async with base.CleanModel() as model: ++ ann_facade = client.AnnotationsFacade.from_connection(model.connection) ++ ++ ann = client.EntityAnnotations( ++ entity='badtag', ++ annotations={'gui-x': '1', 'gui-y': '1'}, ++ ) ++ with pytest.raises(JujuError): ++ return await ann_facade.Set([ann]) ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_juju_error_in_result(event_loop): ++ ''' ++ Verify that we raise a JujuError when appropraite when we are ++ looking at a single result coming back. ++ ++ ''' ++ from juju.errors import JujuError ++ from juju.client import client ++ ++ async with base.CleanModel() as model: ++ app_facade = client.ApplicationFacade.from_connection(model.connection) ++ ++ with pytest.raises(JujuError): ++ return await app_facade.GetCharmURL('foo') diff --cc modules/libjuju/tests/integration/test_machine.py index 0000000,0000000..60de035 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_machine.py @@@ -1,0 -1,0 +1,62 @@@ ++import asyncio ++import pytest ++ ++from tempfile import NamedTemporaryFile ++ ++from .. import base ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_status(event_loop): ++ async with base.CleanModel() as model: ++ await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ await asyncio.wait_for( ++ model.block_until(lambda: len(model.machines)), ++ timeout=240) ++ machine = model.machines['0'] ++ ++ assert machine.status in ('allocating', 'pending') ++ assert machine.agent_status == 'pending' ++ assert not machine.agent_version ++ ++ await asyncio.wait_for( ++ model.block_until(lambda: (machine.status == 'running' and ++ machine.agent_status == 'started')), ++ timeout=480) ++ ++ assert machine.status == 'running' ++ # there is some inconsistency in the message case between providers ++ assert machine.status_message.lower() == 'running' ++ assert machine.agent_status == 'started' ++ assert machine.agent_version.major >= 2 ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_scp(event_loop): ++ async with base.CleanModel() as model: ++ await model.add_machine() ++ await asyncio.wait_for( ++ model.block_until(lambda: model.machines), ++ timeout=240) ++ machine = model.machines['0'] ++ await asyncio.wait_for( ++ model.block_until(lambda: (machine.status == 'running' and ++ machine.agent_status == 'started')), ++ timeout=480) ++ ++ with NamedTemporaryFile() as f: ++ f.write(b'testcontents') ++ f.flush() ++ await machine.scp_to(f.name, 'testfile') ++ ++ with NamedTemporaryFile() as f: ++ await machine.scp_from('testfile', f.name) ++ assert f.read() == b'testcontents' diff --cc modules/libjuju/tests/integration/test_model.py index 0000000,0000000..8506786 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_model.py @@@ -1,0 -1,0 +1,249 @@@ ++import asyncio ++from concurrent.futures import ThreadPoolExecutor ++from pathlib import Path ++import pytest ++ ++from .. import base ++from juju.model import Model ++from juju.client.client import ConfigValue ++ ++MB = 1 ++GB = 1024 ++SSH_KEY = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsYMJGNGG74HAJha3n2CFmWYsOOaORnJK6VqNy86pj0MIpvRXBzFzVy09uPQ66GOQhTEoJHEqE77VMui7+62AcMXT+GG7cFHcnU8XVQsGM6UirCcNyWNysfiEMoAdZScJf/GvoY87tMEszhZIUV37z8PUBx6twIqMdr31W1J0IaPa+sV6FEDadeLaNTvancDcHK1zuKsL39jzAg7+LYjKJfEfrsQP+lj/EQcjtKqlhVS5kzsJVfx8ZEd0xhW5G7N6bCdKNalS8mKCMaBXJpijNQ82AiyqCIDCRrre2To0/i7pTjRiL0U9f9mV3S4NJaQaokR050w/ZLySFf6F7joJT mathijs@Qrama-Mathijs' # noqa ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_deploy_local_bundle(event_loop): ++ from pathlib import Path ++ tests_dir = Path(__file__).absolute().parent.parent ++ bundle_path = tests_dir / 'bundle' ++ ++ async with base.CleanModel() as model: ++ await model.deploy(str(bundle_path)) ++ ++ for app in ('wordpress', 'mysql'): ++ assert app in model.applications ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_deploy_bundle(event_loop): ++ async with base.CleanModel() as model: ++ await model.deploy('bundle/wiki-simple') ++ ++ for app in ('wiki', 'mysql'): ++ assert app in model.applications ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_deploy_channels_revs(event_loop): ++ async with base.CleanModel() as model: ++ charm = 'cs:~johnsca/libjuju-test' ++ stable = await model.deploy(charm, 'a1') ++ edge = await model.deploy(charm, 'a2', channel='edge') ++ rev = await model.deploy(charm+'-2', 'a3') ++ ++ assert [a.charm_url for a in (stable, edge, rev)] == [ ++ 'cs:~johnsca/libjuju-test-1', ++ 'cs:~johnsca/libjuju-test-2', ++ 'cs:~johnsca/libjuju-test-2', ++ ] ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_add_machine(event_loop): ++ from juju.machine import Machine ++ ++ async with base.CleanModel() as model: ++ # add a new default machine ++ machine1 = await model.add_machine() ++ ++ # add a machine with constraints, disks, and series ++ machine2 = await model.add_machine( ++ constraints={ ++ 'mem': 256 * MB, ++ }, ++ disks=[{ ++ 'pool': 'rootfs', ++ 'size': 10 * GB, ++ 'count': 1, ++ }], ++ series='xenial', ++ ) ++ ++ # add a lxd container to machine2 ++ machine3 = await model.add_machine( ++ 'lxd:{}'.format(machine2.id)) ++ ++ for m in (machine1, machine2, machine3): ++ assert isinstance(m, Machine) ++ ++ assert len(model.machines) == 3 ++ ++ await machine3.destroy(force=True) ++ await machine2.destroy(force=True) ++ res = await machine1.destroy(force=True) ++ ++ assert res is None ++ assert len(model.machines) == 0 ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_relate(event_loop): ++ from juju.relation import Relation ++ ++ async with base.CleanModel() as model: ++ await model.deploy( ++ 'ubuntu', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ await model.deploy( ++ 'nrpe', ++ application_name='nrpe', ++ series='trusty', ++ channel='stable', ++ # subordinates must be deployed without units ++ num_units=0, ++ ) ++ my_relation = await model.add_relation( ++ 'ubuntu', ++ 'nrpe', ++ ) ++ ++ assert isinstance(my_relation, Relation) ++ ++ ++async def _deploy_in_loop(new_loop, model_name): ++ new_model = Model(new_loop) ++ await new_model.connect_model(model_name) ++ try: ++ await new_model.deploy('cs:xenial/ubuntu') ++ assert 'ubuntu' in new_model.applications ++ finally: ++ await new_model.disconnect() ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_explicit_loop(event_loop): ++ async with base.CleanModel() as model: ++ model_name = model.info.name ++ new_loop = asyncio.new_event_loop() ++ new_loop.run_until_complete( ++ _deploy_in_loop(new_loop, model_name)) ++ await model._wait_for_new('application', 'ubuntu') ++ assert 'ubuntu' in model.applications ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_explicit_loop_threaded(event_loop): ++ async with base.CleanModel() as model: ++ model_name = model.info.name ++ new_loop = asyncio.new_event_loop() ++ with ThreadPoolExecutor(1) as executor: ++ f = executor.submit( ++ new_loop.run_until_complete, ++ _deploy_in_loop(new_loop, model_name)) ++ f.result() ++ await model._wait_for_new('application', 'ubuntu') ++ assert 'ubuntu' in model.applications ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_store_resources_charm(event_loop): ++ async with base.CleanModel() as model: ++ ghost = await model.deploy('cs:ghost-19') ++ assert 'ghost' in model.applications ++ terminal_statuses = ('active', 'error', 'blocked') ++ await model.block_until( ++ lambda: ( ++ len(ghost.units) > 0 and ++ ghost.units[0].workload_status in terminal_statuses) ++ ) ++ # ghost will go in to blocked (or error, for older ++ # charm revs) if the resource is missing ++ assert ghost.units[0].workload_status == 'active' ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_store_resources_bundle(event_loop): ++ async with base.CleanModel() as model: ++ bundle = str(Path(__file__).parent / 'bundle') ++ await model.deploy(bundle) ++ assert 'ghost' in model.applications ++ ghost = model.applications['ghost'] ++ terminal_statuses = ('active', 'error', 'blocked') ++ await model.block_until( ++ lambda: ( ++ len(ghost.units) > 0 and ++ ghost.units[0].workload_status in terminal_statuses) ++ ) ++ # ghost will go in to blocked (or error, for older ++ # charm revs) if the resource is missing ++ assert ghost.units[0].workload_status == 'active' ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_ssh_key(event_loop): ++ async with base.CleanModel() as model: ++ await model.add_ssh_key('admin', SSH_KEY) ++ result = await model.get_ssh_key(True) ++ result = result.serialize()['results'][0].serialize()['result'] ++ assert SSH_KEY in result ++ await model.remove_ssh_key('admin', SSH_KEY) ++ result = await model.get_ssh_key(True) ++ result = result.serialize()['results'][0].serialize()['result'] ++ assert result is None ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_get_machines(event_loop): ++ async with base.CleanModel() as model: ++ result = await model.get_machines() ++ assert isinstance(result, list) ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_watcher_reconnect(event_loop): ++ async with base.CleanModel() as model: ++ await model.connection.ws.close() ++ await asyncio.sleep(0.1) ++ assert model.connection.is_open ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_config(event_loop): ++ async with base.CleanModel() as model: ++ await model.set_config({ ++ 'extra-info': 'booyah', ++ 'test-mode': ConfigValue(value=True), ++ }) ++ result = await model.get_config() ++ assert 'extra-info' in result ++ assert result['extra-info'].source == 'model' ++ assert result['extra-info'].value == 'booyah' ++ ++# @base.bootstrapped ++# @pytest.mark.asyncio ++# async def test_grant(event_loop) ++# async with base.CleanController() as controller: ++# await controller.add_user('test-model-grant') ++# await controller.grant('test-model-grant', 'superuser') ++# async with base.CleanModel() as model: ++# await model.grant('test-model-grant', 'admin') ++# assert model.get_user('test-model-grant')['access'] == 'admin' ++# await model.grant('test-model-grant', 'login') ++# assert model.get_user('test-model-grant')['access'] == 'login' diff --cc modules/libjuju/tests/integration/test_unit.py index 0000000,0000000..1604c31 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/integration/test_unit.py @@@ -1,0 -1,0 +1,78 @@@ ++import asyncio ++import pytest ++ ++from tempfile import NamedTemporaryFile ++ ++from .. import base ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_run(event_loop): ++ from juju.action import Action ++ ++ async with base.CleanModel() as model: ++ app = await model.deploy( ++ 'ubuntu-0', ++ application_name='ubuntu', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ for unit in app.units: ++ action = await unit.run('unit-get public-address') ++ assert isinstance(action, Action) ++ assert 'Stdout' in action.results ++ break ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_run_action(event_loop): ++ async def run_action(unit): ++ # unit.run() returns a juju.action.Action instance ++ action = await unit.run_action('add-repo', repo='myrepo') ++ # wait for the action to complete ++ return await action.wait() ++ ++ async with base.CleanModel() as model: ++ app = await model.deploy( ++ 'git', ++ application_name='git', ++ series='trusty', ++ channel='stable', ++ ) ++ ++ for unit in app.units: ++ action = await run_action(unit) ++ assert action.results == {'dir': '/var/git/myrepo.git'} ++ break ++ ++ ++@base.bootstrapped ++@pytest.mark.asyncio ++async def test_scp(event_loop): ++ async with base.CleanModel() as model: ++ app = await model.deploy('ubuntu') ++ ++ await asyncio.wait_for( ++ model.block_until(lambda: app.units), ++ timeout=60) ++ unit = app.units[0] ++ await asyncio.wait_for( ++ model.block_until(lambda: unit.machine), ++ timeout=60) ++ machine = unit.machine ++ await asyncio.wait_for( ++ model.block_until(lambda: (machine.status == 'running' and ++ machine.agent_status == 'started')), ++ timeout=480) ++ ++ with NamedTemporaryFile() as f: ++ f.write(b'testcontents') ++ f.flush() ++ await unit.scp_to(f.name, 'testfile') ++ ++ with NamedTemporaryFile() as f: ++ await unit.scp_from('testfile', f.name) ++ assert f.read() == b'testcontents' diff --cc modules/libjuju/tests/unit/__init__.py index 0000000,0000000..e69de29 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/__init__.py diff --cc modules/libjuju/tests/unit/test_client.py index 0000000,0000000..7828cf3 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/test_client.py @@@ -1,0 -1,0 +1,25 @@@ ++""" ++Tests for generated client code ++ ++""" ++ ++import mock ++import pytest ++ ++ ++from juju.client import client ++ ++ ++ ++def test_basics(): ++ assert client.CLIENTS ++ for i in range(1,5): # Assert versions 1-4 in client dict ++ assert str(i) in client.CLIENTS ++ ++ ++def test_from_connection(): ++ connection = mock.Mock() ++ connection.facades = {"Action": 2} ++ action_facade = client.ActionFacade.from_connection(connection) ++ ++ diff --cc modules/libjuju/tests/unit/test_connection.py index 0000000,0000000..f69b8d6 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/test_connection.py @@@ -1,0 -1,0 +1,54 @@@ ++import asyncio ++import json ++import mock ++import pytest ++from collections import deque ++ ++from websockets.exceptions import ConnectionClosed ++ ++from .. import base ++from juju.client.connection import Connection ++ ++ ++class WebsocketMock: ++ def __init__(self, responses): ++ super().__init__() ++ self.responses = deque(responses) ++ self.open = True ++ ++ async def send(self, message): ++ pass ++ ++ async def recv(self): ++ if not self.responses: ++ await asyncio.sleep(1) # delay to give test time to finish ++ raise ConnectionClosed(0, 'ran out of responses') ++ return json.dumps(self.responses.popleft()) ++ ++ async def close(self): ++ self.open = False ++ ++ ++@pytest.mark.asyncio ++async def test_out_of_order(event_loop): ++ con = Connection(*[None]*4) ++ ws = WebsocketMock([ ++ {'request-id': 1}, ++ {'request-id': 3}, ++ {'request-id': 2}, ++ ]) ++ expected_responses = [ ++ {'request-id': 1}, ++ {'request-id': 2}, ++ {'request-id': 3}, ++ ] ++ con._get_sll = mock.MagicMock() ++ try: ++ with mock.patch('websockets.connect', base.AsyncMock(return_value=ws)): ++ await con.open() ++ actual_responses = [] ++ for i in range(3): ++ actual_responses.append(await con.rpc({'version': 1})) ++ assert actual_responses == expected_responses ++ finally: ++ await con.close() diff --cc modules/libjuju/tests/unit/test_constraints.py index 0000000,0000000..cb9d773 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/test_constraints.py @@@ -1,0 -1,0 +1,47 @@@ ++# ++# Test our constraints parser ++# ++ ++import unittest ++ ++from juju import constraints ++ ++class TestConstraints(unittest.TestCase): ++ ++ def test_mem_regex(self): ++ m = constraints.MEM ++ self.assertTrue(m.match("10G")) ++ self.assertTrue(m.match("1G")) ++ self.assertFalse(m.match("1Gb")) ++ self.assertFalse(m.match("a1G")) ++ self.assertFalse(m.match("1000")) ++ ++ def test_normalize_key(self): ++ _ = constraints.normalize_key ++ ++ self.assertEqual(_("test-key"), "test_key") ++ self.assertEqual(_("test-key "), "test_key") ++ self.assertEqual(_(" test-key"), "test_key") ++ self.assertEqual(_("TestKey"), "test_key") ++ self.assertEqual(_("testKey"), "test_key") ++ ++ def test_normalize_val(self): ++ _ = constraints.normalize_value ++ ++ self.assertEqual(_("10G"), 10 * 1024) ++ self.assertEqual(_("10M"), 10) ++ self.assertEqual(_("10"), 10) ++ self.assertEqual(_("foo,bar"), ["foo", "bar"]) ++ ++ def test_parse_constraints(self): ++ _ = constraints.parse ++ ++ self.assertEqual( ++ _("mem=10G"), ++ {"mem": 10 * 1024} ++ ) ++ ++ self.assertEqual( ++ _("mem=10G foo=bar,baz"), ++ {"mem": 10 * 1024, "foo": ["bar", "baz"]} ++ ) diff --cc modules/libjuju/tests/unit/test_loop.py index 0000000,0000000..f12368e new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/test_loop.py @@@ -1,0 -1,0 +1,30 @@@ ++import asyncio ++import unittest ++import juju.loop ++ ++ ++class TestLoop(unittest.TestCase): ++ def setUp(self): ++ # new event loop for each test ++ policy = asyncio.get_event_loop_policy() ++ self.loop = policy.new_event_loop() ++ policy.set_event_loop(self.loop) ++ ++ def tearDown(self): ++ self.loop.close() ++ ++ def test_run(self): ++ assert asyncio.get_event_loop() == self.loop ++ async def _test(): ++ return 'success' ++ self.assertEqual(juju.loop.run(_test()), 'success') ++ ++ def test_run_interrupt(self): ++ async def _test(): ++ juju.loop.run._sigint = True ++ self.assertRaises(KeyboardInterrupt, juju.loop.run, _test()) ++ ++ def test_run_exception(self): ++ async def _test(): ++ raise ValueError() ++ self.assertRaises(ValueError, juju.loop.run, _test()) diff --cc modules/libjuju/tests/unit/test_model.py index 0000000,0000000..222d881 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/test_model.py @@@ -1,0 -1,0 +1,155 @@@ ++import unittest ++ ++import mock ++import asynctest ++ ++ ++def _make_delta(entity, type_, data=None): ++ from juju.client.client import Delta ++ from juju.delta import get_entity_delta ++ ++ delta = Delta([entity, type_, data]) ++ return get_entity_delta(delta) ++ ++ ++class TestObserver(unittest.TestCase): ++ def _make_observer(self, *args): ++ from juju.model import _Observer ++ return _Observer(*args) ++ ++ def test_cares_about_id(self): ++ id_ = 'foo' ++ ++ o = self._make_observer( ++ None, None, None, id_, None) ++ ++ delta = _make_delta( ++ 'application', 'change', dict(name=id_)) ++ ++ self.assertTrue(o.cares_about(delta)) ++ ++ def test_cares_about_type(self): ++ type_ = 'application' ++ ++ o = self._make_observer( ++ None, type_, None, None, None) ++ ++ delta = _make_delta( ++ type_, 'change', dict(name='foo')) ++ ++ self.assertTrue(o.cares_about(delta)) ++ ++ def test_cares_about_action(self): ++ action = 'change' ++ ++ o = self._make_observer( ++ None, None, action, None, None) ++ ++ delta = _make_delta( ++ 'application', action, dict(name='foo')) ++ ++ self.assertTrue(o.cares_about(delta)) ++ ++ def test_cares_about_predicate(self): ++ def predicate(delta): ++ return delta.data.get('fizz') == 'bang' ++ ++ o = self._make_observer( ++ None, None, None, None, predicate) ++ ++ delta = _make_delta( ++ 'application', 'change', dict(fizz='bang')) ++ ++ self.assertTrue(o.cares_about(delta)) ++ ++ ++class TestModelState(unittest.TestCase): ++ def test_apply_delta(self): ++ from juju.model import Model ++ from juju.application import Application ++ ++ loop = mock.MagicMock() ++ model = Model(loop=loop) ++ delta = _make_delta('application', 'add', dict(name='foo')) ++ ++ # test add ++ prev, new = model.state.apply_delta(delta) ++ self.assertEqual( ++ len(model.state.state[delta.entity][delta.get_id()]), 1) ++ self.assertIsNone(prev) ++ self.assertIsInstance(new, Application) ++ ++ # test remove ++ delta.type = 'remove' ++ prev, new = model.state.apply_delta(delta) ++ # length of the entity history deque is now 3: ++ # - 1 for the first delta ++ # - 1 for the second delta ++ # - 1 for the None sentinel appended after the 'remove' ++ self.assertEqual( ++ len(model.state.state[delta.entity][delta.get_id()]), 3) ++ self.assertIsInstance(new, Application) ++ # new object is falsy because its data is None ++ self.assertFalse(new) ++ self.assertIsInstance(prev, Application) ++ self.assertTrue(prev) ++ ++ ++def test_get_series(): ++ from juju.model import Model ++ model = Model() ++ entity = { ++ 'Meta': { ++ 'supported-series': { ++ 'SupportedSeries': [ ++ 'xenial', ++ 'trusty', ++ ], ++ }, ++ }, ++ } ++ assert model._get_series('cs:trusty/ubuntu', entity) == 'trusty' ++ assert model._get_series('xenial/ubuntu', entity) == 'xenial' ++ assert model._get_series('~foo/xenial/ubuntu', entity) == 'xenial' ++ assert model._get_series('~foo/ubuntu', entity) == 'xenial' ++ assert model._get_series('ubuntu', entity) == 'xenial' ++ assert model._get_series('cs:ubuntu', entity) == 'xenial' ++ ++ ++class TestContextManager(asynctest.TestCase): ++ @asynctest.patch('juju.model.Model.disconnect') ++ @asynctest.patch('juju.model.Model.connect_current') ++ async def test_normal_use(self, mock_connect, mock_disconnect): ++ from juju.model import Model ++ ++ async with Model() as model: ++ self.assertTrue(isinstance(model, Model)) ++ ++ self.assertTrue(mock_connect.called) ++ self.assertTrue(mock_disconnect.called) ++ ++ @asynctest.patch('juju.model.Model.disconnect') ++ @asynctest.patch('juju.model.Model.connect_current') ++ async def test_exception(self, mock_connect, mock_disconnect): ++ from juju.model import Model ++ ++ class SomeException(Exception): ++ pass ++ ++ with self.assertRaises(SomeException): ++ async with Model(): ++ raise SomeException() ++ ++ self.assertTrue(mock_connect.called) ++ self.assertTrue(mock_disconnect.called) ++ ++ @asynctest.patch('juju.client.connection.JujuData.current_controller') ++ async def test_no_current_connection(self, mock_current_controller): ++ from juju.model import Model ++ from juju.errors import JujuConnectionError ++ ++ mock_current_controller.return_value = "" ++ ++ with self.assertRaises(JujuConnectionError): ++ async with Model(): ++ pass diff --cc modules/libjuju/tests/unit/test_overrides.py index 0000000,0000000..6485408 new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/test_overrides.py @@@ -1,0 -1,0 +1,76 @@@ ++import pytest ++ ++from juju.client.overrides import Number, Binary # noqa ++ ++ ++# test cases ported from: ++# https://github.com/juju/version/blob/master/version_test.go ++@pytest.mark.parametrize("input,expected", ( ++ (None, Number(major=0, minor=0, patch=0, tag='', build=0)), ++ (Number(major=1, minor=0, patch=0), Number(major=1, minor=0, patch=0)), ++ ({'major': 1, 'minor': 0, 'patch': 0}, Number(major=1, minor=0, patch=0)), ++ ("0.0.1", Number(major=0, minor=0, patch=1)), ++ ("0.0.2", Number(major=0, minor=0, patch=2)), ++ ("0.1.0", Number(major=0, minor=1, patch=0)), ++ ("0.2.3", Number(major=0, minor=2, patch=3)), ++ ("1.0.0", Number(major=1, minor=0, patch=0)), ++ ("10.234.3456", Number(major=10, minor=234, patch=3456)), ++ ("10.234.3456.1", Number(major=10, minor=234, patch=3456, build=1)), ++ ("10.234.3456.64", Number(major=10, minor=234, patch=3456, build=64)), ++ ("10.235.3456", Number(major=10, minor=235, patch=3456)), ++ ("1.21-alpha1", Number(major=1, minor=21, patch=1, tag="alpha")), ++ ("1.21-alpha1.1", Number(major=1, minor=21, patch=1, tag="alpha", ++ build=1)), ++ ("1.21-alpha10", Number(major=1, minor=21, patch=10, tag="alpha")), ++ ("1.21.0", Number(major=1, minor=21)), ++ ("1234567890.2.1", TypeError), ++ ("0.2..1", TypeError), ++ ("1.21.alpha1", TypeError), ++ ("1.21-alpha", TypeError), ++ ("1.21-alpha1beta", TypeError), ++ ("1.21-alpha-dev", TypeError), ++ ("1.21-alpha_dev3", TypeError), ++ ("1.21-alpha123dev3", TypeError), ++)) ++def test_number(input, expected): ++ if expected is TypeError: ++ with pytest.raises(expected): ++ Number.from_json(input) ++ else: ++ result = Number.from_json(input) ++ assert result == expected ++ if isinstance(input, str): ++ assert result.to_json() == input ++ ++ ++# test cases ported from: ++# https://github.com/juju/version/blob/master/version_test.go ++@pytest.mark.parametrize("input,expected", ( ++ (None, Binary(Number(), None, None)), ++ (Binary(Number(1), 'trusty', 'amd64'), Binary(Number(1), ++ 'trusty', 'amd64')), ++ ({'number': {'major': 1}, ++ 'series': 'trusty', ++ 'arch': 'amd64'}, Binary(Number(1), 'trusty', 'amd64')), ++ ("1.2.3-trusty-amd64", Binary(Number(1, 2, 3, "", 0), ++ "trusty", "amd64")), ++ ("1.2.3.4-trusty-amd64", Binary(Number(1, 2, 3, "", 4), ++ "trusty", "amd64")), ++ ("1.2-alpha3-trusty-amd64", Binary(Number(1, 2, 3, "alpha", 0), ++ "trusty", "amd64")), ++ ("1.2-alpha3.4-trusty-amd64", Binary(Number(1, 2, 3, "alpha", 4), ++ "trusty", "amd64")), ++ ("1.2.3", TypeError), ++ ("1.2-beta1", TypeError), ++ ("1.2.3--amd64", TypeError), ++ ("1.2.3-trusty-", TypeError), ++)) ++def test_binary(input, expected): ++ if expected is TypeError: ++ with pytest.raises(expected): ++ Binary.from_json(input) ++ else: ++ result = Binary.from_json(input) ++ assert result == expected ++ if isinstance(input, str): ++ assert result.to_json() == input diff --cc modules/libjuju/tests/unit/test_placement.py index 0000000,0000000..a78a28d new file mode 100644 --- /dev/null +++ b/modules/libjuju/tests/unit/test_placement.py @@@ -1,0 -1,0 +1,20 @@@ ++# ++# Test our placement helper ++# ++ ++import unittest ++ ++from juju import placement ++from juju.client import client ++ ++class TestPlacement(unittest.TestCase): ++ ++ def test_parse_both_specified(self): ++ res = placement.parse("foo:bar") ++ self.assertEqual(res[0].scope, "foo") ++ self.assertEqual(res[0].directive, "bar") ++ ++ def test_parse_machine(self): ++ res = placement.parse("22") ++ self.assertEqual(res[0].scope, "#") ++ self.assertEqual(res[0].directive, "22") diff --cc modules/libjuju/tox.ini index 0000000,0000000..789bbeb new file mode 100644 --- /dev/null +++ b/modules/libjuju/tox.ini @@@ -1,0 -1,0 +1,28 @@@ ++# Tox (http://tox.testrun.org/) is a tool for running tests ++# in multiple virtualenvs. This configuration file will run the ++# test suite on all supported python versions. To use it, "pip install tox" ++# and then run "tox" from this directory. ++ ++[tox] ++envlist = py35 ++skipsdist=True ++ ++[testenv] ++usedevelop=True ++passenv = ++ HOME ++deps = ++ pytest ++ pytest-asyncio ++ pytest-xdist ++ mock ++ asynctest ++ ipdb ++ ++[testenv:py35] ++# default tox env excludes integration tests ++commands = py.test -ra -v -s -x -n auto -k 'not integration' {posargs} ++ ++[testenv:integration] ++basepython=python3 ++commands = py.test -ra -v -s -x -n auto {posargs}